欢迎来到天天文库
浏览记录
ID:38073412
大小:139.62 KB
页数:5页
时间:2019-05-24
《Android核心分析.应用框架-AndroidApplication》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android核心分析(21)----Android应用框架之AndroidApplicationAndroidApplicationAndroid提供给开发程序员的概念空间中Application只是一个松散的表征概念,没有多少实质上的表征。在Android实际空间中看不到实际意义上的应用程序的概念,即使有一个叫Application的类,这个也就是个应用程序上下文状态,是一个极度弱化的概念。Application只是一个空间范畴的概念,Application就是Activity,Servic
2、e之类的组件上下文描述。Application并不是Android的核心概念,而Activity才是Android的核心概念。从Android的SDK文档中,我们知道一般情况Android应用程序是由以下四种组件构造而成的:Activity,BroadcastIntentReceiver,服务(Service),内容提供器(ContentProvider)。我们可以使用下面的图来表示一下Android的概念空间。这些组件依附于应用程序中,应用程序并不会一开始就建立起来,而是在这些组件建立起来后,
3、需要运行时,才开始建立应用程序对象。2.1应用进程名称为什么要从应用进程名称开始?作为内核研究,我们还是回到问题的最本质处:不管Activity,Service等组件如何设计和运行,它要提供服务,就必须要依附在Linux的进程上,建立消息循环,组件才能够真正的运作。Activity实例是如何Hosting在Linux进程上的?这个是我们首先想要弄明白的。我们在的项目中看到android:process="string"这个定义。allowClearUserData=["true"
4、"false"
5、]android:allowTaskReparenting=["true"
6、"false"]android:backupAgent="string"…android:label="stringresource"android:manageSpaceActivity="string"android:name="string"android:permission="string"android:persistent=["true"
7、"false"]android:process="string"an
8、droid:restoreAnyVersion=["true"
9、"false"]android:taskAffinity="string"android:theme="resourceortheme">...在SDK用已经描述的很清楚到了。android:processThenameofaprocesswhereallcomponentsoftheapplicationshouldrun.Eachcomponentcanoverridethisdefaultbysettingitsownproc
10、essattribute.Bydefault,Androidcreatesaprocessforanapplicationwhenthefirstofitscomponentsneedstorun.Allcomponentsthenruninthatprocess.Thenameofthedefaultprocessmatchesthepackagenamesetbytheelement.Bysettingthisattributetoaprocessnamethat'ssharedwithan
11、otherapplication,youcanarrangeforcomponentsofbothapplicationstoruninthesameprocess—butonlyifthetwoapplicationsalsoshareauserIDandbesignedwiththesamecertificate.为什么要提出这么一个定义?android:process名称。默认状态下,ActivityManagerService在应用程序的第一个组件需要运行时将会为应用程序建立一个进程,而
12、这个进程的名字就是android:process=”string”所指定,缺省的是应用程序包的名字。该进程一旦建立,后面的该应用的组件都将运行在该进程中,他们绑定的根据就是这个Android:Process指定的名称,因为在他们都在同一个应用程序包里,也就具有了同样的进程名字,于是他们都托管在了同一进程中。组件将通过ClassLoader从Package中获取到应用程序的信息。在建立Actvitiy时,如果在应用进程端没有应用对象,系统在该过程中利用makeApplication建立一个Appl
此文档下载收益归作者所有