Android启动相关

81 阅读1分钟

app启动流程

  1. launcher被调用点击事件,通过binder通知systemserver进程中的AMS,ams会检查activity栈,看应用进程是否运行,

  2. 如果不存在,则通知zygote进程fork创建app进程,开始执行activitythread的main方法,启动主线程的loop循环

  3. APP进程向systemserver发送attach请求关联

  4. ams会继续通知launchapp,app进程的主线程会创建activity,执行activity的生命周期,显示首屏

Activity启动模式

  1. Standard 每次都创建新实例

  2. singleTop 栈顶复用,栈顶就是当前Activity的话复用,否则Push新实例

    适合通知场景:不会重复进入页面

  3. singleTask 栈内复用,把上面的其他acitivty出栈

    适合程序入口点,比如应用主界面,只会启动一次,然后不需要保留其他页面

  4. Singleinstance 没有的话 新栈新实例,使用唯一实例

    适合闹铃这类:要和其他的分离