首页 > 代码库 > 图解Activity启动流程

图解Activity启动流程

前言

  • 基于android4.4.2源码
  • activity 生命周期图

    本文在讲诉Activity启动流程涉及到了一些Activity生命周期的知识,所以把官方文档直接贴上来(图1),对Activity生命周期知识了然于心的大神直接无视就好。对于刚接触android的看客,则需要先去了解这方面的知识。

  • 涉及知识

    binder机制,因本人原因只能在后续的文章才会更新这方面的内容,对这方面不了解的看客建议先去看binder机制的知识。

    android Task ,官方文档解释很清楚。

图1

  

一、Activity启动流程

  通一个Android App来一步一步的讲诉的Activity是如何启动的。首先大家都应该等不及了,废物不多说(其实我也不想说)还是先上图吧。

  

 

 

  

 

 

 

 

  其实这张图已经很清晰的讲诉了activity启动的流程,所以代码我就不贴上来了。

  抱怨两句,本来好好的一张图传上来了只能看到部分,只好把图片缩小然后再截屏贴上来。看来还是要把代码贴出来才行啊,想要高清无码大图的留下邮件吧,有空肯定会发!

 

  今天没时间贴代码了,下次再贴上来吧。。。

 

二、小结

  • ActivityThread  

     ActivityThread类有一个main方法,它是应用程序的入口,每启动一个应用进程,都会创建ActivityThread与之对应的实例,是应用程序的UI线程,Android进程启动时会建立消息循环(前文图解中也有说明)。

  • ApplicationThread & ApplicatinThreadNative

    ApplicationThread用来实现AMS(ActivityManagerService)与AT(ActivityThread)之间的交互。在AMS需要管理相关Application中的Activity的生命周期时,通过ApplicationThreadAT通讯,ApplicationThreadNativeApplicationThread在客户端的实现(binder机制)。

  • ApplicationThreadProxy

    ApplicationThreadProxyApplicationThread在服务器端的代理。负责和服务器端的ApplicatingThreadNative通讯。 AMS就是通过该代理与ActivityThread进行通信的(binder机制)。

  • Activity & Intrumentation

    Activity是应用程序真正做事情的类,每一个应用程序只有一个Instrumentation对象,每个Activity内都有一个对该对象的引用(也就是说mInstrumentation是Activity类的成员变量,前文图解中也有说明)。

    Instrumentation用来监控应用程序和系统的交互,可以理解为应用进程的管家,AT要创建或暂停某个Activity时,都需要通过Instrumentation。 通俗的理解,InstrumentationAT的区别,前者像是一个“家庭”里的“管家”,后者是负责创建这个“家庭”,并负责对外打交道,比如接收AMS的通知等。

 

后序

  本文在讲诉的过程中查阅了大量的资料,其中讲诉的一些知识难免会跟原作者“雷同”,望原作者谅解。刚接触android,文中讲诉的过程中难免会出现一些错误,希望大家能批评指正,另外后序的文章会不定时更新。

  

图解Activity启动流程