美文网首页
第七章 Activity组件的启动过程 - 草稿

第七章 Activity组件的启动过程 - 草稿

作者: 魏国彬 | 来源:发表于2018-03-11 17:19 被阅读0次

    1. 将MainAcitvity组件的Action和Category名称分别设置为"android.intent.action.MAIN"和"android.intent.category.LAUNCHER",使得它可以作为应用程序Activity的根Activity组件。

    2. 在Android系统中,所有的Activity组件都保存在一个堆栈中,其中后面启动的位于前面启动的上面。用户在执行一个操作时,通常需要与一系列相关的Activity组件进行交互,这些相关的Activity组件在系统的Activity堆栈中用一个任务(Task)来描述。

    3.Laucher组件启动MainAcitvity组件的过程如下所示

    第七章 Activity组件的启动过程 - 草稿 第七章 Activity组件的启动过程 - 草稿 第七章 Activity组件的启动过程 - 草稿 第七章 Activity组件的启动过程 - 草稿 第七章 Activity组件的启动过程 - 草稿 上传中,请稍候... 第七章 Activity组件的启动过程 - 草稿 第七章 Activity组件的启动过程 - 草稿

    4. ActivityManagerService类有一个类型为ActivityStack的成员变量mMainStack,用来描述一个Activity组件堆栈。

    5. 在ActivityManagerService中,每一个应用程序进程都使用一个ProcessRecord对象来描述,并且保存在ActivityManagerService内部。

    第七章 Activity组件的启动过程 - 草稿

    6. ActivityStack类有三个成员变量mResumedActivity、mLastPausedActivity和mPausingActivity,它们的类型均为ActivityRecord,分别用来描述系统当前激活的Activity组件、上一次被中止的组件以及正在被中止的组件。

    7. ActivityRecord类有一个成员变量app,它的类型为ProcessRecord,用来描述一个Activity组件所运行在的应用程序进程;而ProcessRecord类又有一个成员变量thread,它的类型为ApplicationThreadProxy,一个Binder代理对象,引用的是一个类型为ApplicationThread的Binder本地对象,即用代理对象来和应用程序进程进行binder通信。

    8. 在ActivityManagerService中,每一个Activity组件都有一个用户ID和一个进程名称;其中,用户ID是在安装该Activity组件时由packageManagerService分配的,而进程名称则是在该Activity组件的android:process属性来决定的。ActivityManagerService在启动一个Activity组件时,首先会以它的用户ID和进程名称来检查系统中是否存在一个对应的应用程序进程。如果存在,就会直接通知这个应用程序进程将该Activity组件启动起来;否则,就会先以这个用户ID和进程名称来创建一个应用程序进程,然后再通知这个应用程序进程将该Activity启动起来。

    相关文章

      网友评论

          本文标题:第七章 Activity组件的启动过程 - 草稿

          本文链接:https://www.haomeiwen.com/subject/hdywfftx.html