app启动流程
-
launcher被调用点击事件,通过binder通知systemserver进程中的AMS,ams会检查activity栈,看应用进程是否运行,
-
如果不存在,则通知zygote进程fork创建app进程,开始执行activitythread的main方法,启动主线程的loop循环
-
APP进程向systemserver发送attach请求关联
-
ams会继续通知launchapp,app进程的主线程会创建activity,执行activity的生命周期,显示首屏
Activity启动模式
-
Standard 每次都创建新实例
-
singleTop 栈顶复用,栈顶就是当前Activity的话复用,否则Push新实例
适合通知场景:不会重复进入页面
-
singleTask 栈内复用,把上面的其他acitivty出栈
适合程序入口点,比如应用主界面,只会启动一次,然后不需要保留其他页面
-
Singleinstance 没有的话 新栈新实例,使用唯一实例
适合闹铃这类:要和其他的分离