Android 中应用程序Activity的冷启动流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 中应用程序Activity的冷启动流程相关的知识,希望对你有一定的参考价值。
参考技术A Activity的启动主要涉及四个进程SystemServer进程:主要负责管理整个Framework
App进程:app用户点击桌面icon时,通过Launcher进程请求SystemServer进程,再通知Zygote孵化的。
Zygote进程:所有的应用进程都是有Zygote孵化出来的,而Zygote进程由init进程孵化出来,init进程的子进程。
Launcher 进程 :Zygote进程孵化的第一个应用进程。
Activity的启动主要涉及到七个阶段
第一阶段: Launcher通知AMS要启动新的Activity(在Launcher所在的进程执行)
第二阶段:AMS先校验一下Activity的正确性,如果正确的话,会暂存一下Activity的信息。然后,AMS会通知Launcher程序pause Activity(在AMS所在进程执行)
第三阶段: pause Launcher的Activity,并通知AMS已经paused(在Launcher所在进程执行)
第四阶段:检查activity所在进程是否存在,如果存在,就直接通知这个进程,在该进程中启动Activity;不存在的话,会调用Process.start创建一个新进程(执行在AMS进程,内部通过socket和Zygote通信,fork一个新进程)
第五阶段: 创建ActivityThread实例,执行一些初始化操作,之后进入Loop循环。(执行在新创建的app进程)
第六阶段:处理新的应用进程发出的创建进程完成的通信请求,并通知新应用程序绑定Application。如果Application不存在,会调用LoadedApk.makeApplication创建一个新的Application对象。并且通知进程启动目标Activity组件(执行在AMS进程)
第七阶段: 加载MainActivity类,调用onCreate声明周期方法(执行在新启动的app进程)
最后我们来简单总结一下Activity的启动流程。
1、startActivity
2、Instrumentation请求AMS启动Activity(Binder)
3、AMS请求Zygote开启进程
4、Zygote创建应用进程
5、应用进程启动ActivityThread(主线程)
6、ActivityThread绑定Application
8、ActivityThread启动Activity
9、调用Activity的onCreate方法
推荐系统中的冷启动问题
1. 思维图
用户冷启动:主要是解决如何给新用户做个性化推荐的问题。
系统冷启动:主要解决如何在一个新开发的网站上设计个性化推荐系统。
物品冷启动:主要解决如何将新的物品推荐给对它感兴趣的用户。
2. 参考博客
https://www.jianshu.com/p/62e5171c85bc
以上是关于Android 中应用程序Activity的冷启动流程的主要内容,如果未能解决你的问题,请参考以下文章
Android12.2 利用Intent启动和关闭Activity