标签:
本文在讲诉Activity启动流程涉及到了一些Activity生命周期的知识,所以把官方文档直接贴上来(图1),对Activity生命周期知识了然于心的大神直接无视就好。对于刚接触android的看客,则需要先去了解这方面的知识。
binder机制,因本人原因只能在后续的文章才会更新这方面的内容,对这方面不了解的看客建议先去看binder机制的知识。
android Task ,官方文档解释很清楚。
图1
通一个Android App来一步一步的讲诉的Activity是如何启动的。首先大家都应该等不及了,废物不多说(其实我也不想说)还是先上图吧。
其实这张图已经很清晰的讲诉了activity启动的流程,所以代码我就不贴上来了。
抱怨两句,本来好好的一张图传上来了只能看到部分,只好把图片缩小然后再截屏贴上来。看来还是要把代码贴出来才行啊,想要高清无码大图的留下邮件吧,有空肯定会发!
今天没时间贴代码了,下次再贴上来吧。。。
ActivityThread类有一个main方法,它是应用程序的入口,每启动一个应用进程,都会创建ActivityThread与之对应的实例,是应用程序的UI线程,Android进程启动时会建立消息循环(前文图解中也有说明)。
ApplicationThread用来实现AMS(ActivityManagerService)与AT(ActivityThread)之间的交互。在AMS需要管理相关Application中的Activity的生命周期时,通过ApplicationThread与AT通讯,ApplicationThreadNative是ApplicationThread在客户端的实现(binder机制)。
ApplicationThreadProxy是ApplicationThread在服务器端的代理。负责和服务器端的ApplicatingThreadNative通讯。 AMS就是通过该代理与ActivityThread进行通信的(binder机制)。
Activity是应用程序真正做事情的类,每一个应用程序只有一个Instrumentation对象,每个Activity内都有一个对该对象的引用(也就是说mInstrumentation是Activity类的成员变量,前文图解中也有说明)。
Instrumentation用来监控应用程序和系统的交互,可以理解为应用进程的管家,AT要创建或暂停某个Activity时,都需要通过Instrumentation。 通俗的理解,Instrumentation与AT的区别,前者像是一个“家庭”里的“管家”,后者是负责创建这个“家庭”,并负责对外打交道,比如接收AMS的通知等。
本文在讲诉的过程中查阅了大量的资料,其中讲诉的一些知识难免会跟原作者“雷同”,望原作者谅解。刚接触android,文中讲诉的过程中难免会出现一些错误,希望大家能批评指正,另外后序的文章会不定时更新。
标签:
原文地址:http://www.cnblogs.com/solo-heart/p/3871110.html