App启动过程 ---- 林冠宏
2017-02-17 10:27:00 0 举报
App启动过程是用户首次打开应用时的一系列操作。这个过程包括了从点击图标到应用完全加载并显示主界面的整个过程。在这个阶段,应用需要进行一些初始化操作,如加载配置文件、创建数据库连接、初始化视图等。此外,应用还需要进行一些性能优化,以确保用户能够快速地打开应用并开始使用。例如,应用可以使用异步加载技术来减少主线程的负担,从而提高启动速度。总之,App启动过程是一个复杂而重要的阶段,它直接影响到用户体验和满意度。因此,开发者需要仔细设计和优化这个过程,以确保用户能够获得良好的使用体验。
作者其他创作
大纲/内容
new ActivityThread
performLaunchActivity(...)Avtivity 在这里根据一直传过来的信息 new 了一个
AMS.attachApplicationLocked(...)往下走,ActivityStackSupervisor.attachApplicationLocked(...)
作者:林冠宏
①
初始化Context,Application 开始初始化,调用 onCreate. ..等操作
get Looper.myLooperget myLooper.mqueue
触发 BIND_APPLICATION 消息H.sendMessage(...)
realStartActivityLocked(...)
H.handleMessage(...)处理
looper.prapare
main
App启动过程之片段,其中 handler 负责了所有事件的分发和处理所依赖的队列,来自于 Looper,事件包含有我们常见的 onCreate/onStart/onResume .... ,具体请看下面拆解
第二部分Activity的初始化
AMS.attachApplication(mAppThread)绑定 mAppThread
触发 LAUNCH_ACTIVITY 消息H.sendMessage(...)
Looper.loop()消息队列开始循环
跨进程,binder通讯mAppThread.bindApplication(...)
activityThread.attach(bool isSystemApp)
基于
第一部分,其中H 的消息处理,在Looper的mqueue 里面,后续的也一样是
AMS.attachApplicationLocked(...)
注:AMS 为ActivityManagerService,AMS通过ActivityStack和ActivityStackSupervisor管理Activity栈
init myLooper
initmAppThread extends BinderH extends Handler
ActivityThread
0 条评论
下一页