1、onStart()与onResume()有什么区别
onStart()
是 Activity
界面被显示出来的时候执行的,但不能与它交互;onResume()
是 当该 Activity
与用户能进行交互时被执行,用户可以获得它的焦点,能够与其交互。
2、Android、java两种虚拟机区别与联系
Android中的Dalvik虚拟机相较于Java虚拟机针对手机的特点做了很多优化。
Dalvik基于寄存器,而JVM基于栈。在基于寄存器的虚拟机里,可以更为有效的减少冗余指令的分发和减少内存的读写访问。
Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik应用作为一个独立的Linux进程执行。
java虚拟机运行的是java字节码。(java类会被编译成一个或多个字节码.class文件,打包到.jar文件中,java虚拟机从相应的.class文件和.jar文件中获取相应的字节码)
Dalvik运行的是自定义的.dex字节码格式。(java类被编译成.class文件后,会通过一个dx工具将所有的.class文件转换成一个.dex文件,然后dalvik虚拟机会从其中读取指令和数据)
3、adb常用命令行
查看当前连接的设备:adb devices
安装应用:adb install -r {path} -r表示覆盖安装
卸载apk:adb uninstall {path}
4、apktools常用指令
apktool d -p frame ***.apk -o wenjianjia
apktool b -p frame wenjianjia -o new.apk
5、apk打包流程
-
aapt工具打包资源文件,生成R.java文件
-
aidl工具处理AIDL文件,生成对应的.java文件
-
javac工具编译Java文件,生成对应的.class文件
-
把.class文件转化成Davik VM支持的.dex文件
-
apkbuilder工具打包生成未签名的.apk文件
-
jarsigner对未签名.apk文件进行签名
-
zipalign工具对签名后的.apk文件进行对齐处理
6、apk安装流程
-
复制APK到/data/app目录下,解压并扫描安装包。
-
资源管理器解析APK里的资源文件。
-
解析AndroidManifest文件,并在/data/data/目录下创建对应的应用数据目录。
-
然后对dex文件进行优化,并保存在dalvik-cache目录下。
-
将AndroidManifest文件解析出的四大组件信息注册到PackageManagerService中。
-
安装完成后,发送广播。