首页天道酬勤安卓activity启动方法,android启动流程

安卓activity启动方法,android启动流程

张世龙 05-06 09:21 81次浏览

活动-启动流程完整版hi,你好,我是喜欢香蕉的猴子。 最近正在探索Activity的启动流程。 参考的学习手册是Android系统源代码的方案分析_tzdhb。 我有电子版,但考虑到版权问题,需要的朋友支持正版。 如果有只看部分内容的评论信息,则共享。 闲话少说。 请做。

新规则是推测后再总结代码。 在launcher中单击APP

Launcher组件启动主活动组件的过程如下: (1) Launcher组件向ActivityManagerService发送用于启动主活动组件的进程间通信请求。 )2) ActivityManagerService首先保存要启动的MainActivity组件的信息,然后向Launcher组件发送进入中止状态的进程间通信请求。 )3) Launcher组件进入休眠状态后,向ActivityManagerService发送进入休眠状态的进程间通信请求,ActivityManagerService可以继续执行主活动组件的启动操作(启动上一个Activity pause,然后启动新的Activity )4) ActivityManagerService发现不存在运行主活动组件的APP应用程序进程,因此进行了新的(首先启动进程)5)当新的APP应用程序进程启动完成时,向ActivityManagerService发送启动完成的进程间通信请求,ActivityManagerService是主活动组件)6) ActivityManagerService将在步骤2中保存的MainActivity组件信息发送到在步骤4中创建的APP应用程序进程,以便可以启动MainActivity组件。 -从宏观上图示前五个步骤,大家应该对Activity --- AMS很熟悉

在AMS中处理,主要在ActivityStack中处理ActivityStack类有三个成员变量mResumedActivity、mLastPausedActivity和mPausingActivity。 这些类型都是ActivityRecord。系统当前处于活动状态的Activity组件是Launcher组件,因此是Activity堆栈类的成员变量

mResumedActivity指向Launcher组件。 成员函数startPausingLocked通知您已进入Paused状态,并允许您将焦点移动到即将启动的主活动组件。 在Launcher组件处理了ActivityManagerService发送的中止通知后,可以将ActivityManagerService放置在Activity组件堆栈上。 必须向ActivityManagerService发送启动主活动组件的通知。所有步骤7都在ActivityManagerService中执行,以下步骤13到步骤17是APP应用程序Launcher 主要用于处理ActivityManagerService发布的类型为schedule _ pause _ activity _ tri vice

第一,调用成员函数performUserLeavingActivity向Launcher组件发送用户退出事件通知。 这意味着调用成员函数onUserLeaveHint。 第二,调用成员函数performPauseActivity向Launcher组件发送中止事件通知;第三,调用QueuedWork类的静态成员函数waitToFinish,将磁盘由于Launcher组件当前即将进入Paused状态,因此必须确保之前的所有数据写入操作都已完成。 执行这三项操作后,ActivityThread类的成员函数handlePauseActivity将返回、 处理了从ActivityManagerService发送的中止Launcher组件进程间通信的请求上述五个步骤均在APP应用程序Launcher中执行,以下步骤18到步骤23为activitymanager 主要用于处理Launcher组件发出的类型为ACTIVITY_PAUSED_TRANSACTION的进程间通信请求。

应用进程的第一次启动是在进程中创建ActivityThread对象,然后调用其成员函数attach向ActivityManagerService发送启动完成通知。 第二,在调用Looper类的静态成员函数prepareMainLooper创建消息吉鲁组并将启动完成通知发送到ActivityManagerService之后,将当前进程放入此消息吉鲁中。

主要用于处理新的APP应用程序进程发出的ATTACH_APPLICATION_TRANSACTION类型的进程间通信请求。

主要用于处理ActivityManagerService发出的schedule _ launch _ activity _ transaction类型的进程间通信请求。 托多

activity启动方法,activity开发流程