1.Activity生命周期:
正常流程:onCreate()->onStart()->onResume()->onpause()->onStop()->onDestory();
再次点击回到Activity:onRestart()->onStart()->onResume()
2.service生命周期:
(1)通过startService()启动:
startService()->onCreate()->onStartCommon()->onDestory();
tips:startService()调用多次,onCreate只会执行一次,onStartCommon调用多次;
调用stopService(),onDestory()执行,销毁服务;
通过intent传值时,必须判null
(2)通过bindService()启动:
bindService()->onCreate()->onBind()->unBind()->onDestory()
3.Activity启动过程:
Launcher调用startActivitySafely()->PMS对AndroidManifest.xml文件进行解析,获取应用程序的相关信息(service,broadcast等)和要启动的Activity的配置信息(action,category等)->调用startActivity()->内部调用startActivityForResult()直接返回-1,表示不需要返回结果;->调用Instrumentation类的execStartActivity()获取AMS的代理对象,通过代理对象->调用checkStartActivityResult()方法,如果没有在配置清单中配置这个组件,这个方法会抛出异常;->调用application的scheduleLaunchActivity()获取一个ActivityClientRecord对象,其中保存这LoaderApk对象->调用handleLaunchActivity启动Activity组件;
4.Broadcast注册方式与区别:
(1)静态注册:
特点:不受页面的生命周期影响,即退出了页面,也可以接收到广播,会占用cpu资源,一般用于想开机自启动等等场景;
(2)动态注册:
特点:会受页面的生命周期影响,即退出页面,不会接收到广播,其优先级较高,一般用于通知UI更新;
5.HttpClient和HttpUrlConnection的区别:
HttpClient的api很多,但是不易扩展,所以在6.0时已经废弃;
HttpUrlConnection比较轻量级,易扩展;
6.Java虚拟机与Dalvik虚拟机区别:
Java虚拟机:
特点:基于栈,使用指令来载入和操作栈上数据,所需指令更多,并且运行的是Java字节码
Dalvik虚拟机:
特点:基于寄存器,运行.dex字节码格式,常量池被修改为只使用32位所有,
一个应用,一个虚拟机实例,一个进程,每个dalvik应用程序都被赋予了一个独立的进程号
7.进程保活&#x