WEB开发网
开发学院手机开发Android 开发 Android 任务、进程和线程 阅读

Android 任务、进程和线程

 2010-07-01 14:54:00 来源:WEB开发网   
核心提示:在Android程序中,开发人员可以直接感知的,Android 任务、进程和线程(4),往往是Task而已,倍感清晰的,以Content Provider为例(通过项进行配置...),项有一个mutiprocess的属性,是组件边界,而进程边界变得难以琢磨

Android程序中,开发人员可以直接感知的,往往是Task而已。倍感清晰的,是组件边界,而进程边界变得难以琢磨,甚至有了进程托管一说。Android中不但剥夺了手工锻造内存权力,连手工处置进程的权责,也毫不犹豫的独占了。

当然,Android隐藏进程细节,并不是刻意为之,而是自然而然水到渠成的。如果,我们把传统的应用称为面向进程的开发,那么,在Android中,我们做得就是面向组件的开发。从前面的内容可以知道,Android组件间的跳转和通信,都是在第三方介入的前提下进行,正由于这种介入,使得两个组件一般不会直接发生联系(于Service的通信,是不需要第三方介入的,因此Android把它全部假设成为穿越进程边界,统一基于RPC来通信,这样,也是为了掩盖进程细节...),其中是否穿越进程边界也就变得不重要。因此,如果这时候,还需要开发者关注进程,就会变得很奇怪,很费解,干脆,Android将所有的进程一并托管去了,上层无须知道进程的生死和通信细节。

Android的底层,进程构造了底部的一个运行池,不仅仅是Task中的各个Activity组件,其他三大组件Service、Content Provider、Broadcast Receiver,都是寄宿在底层某个进程中,进行运转。在这里,进程更像一个资源池(概念形如线程池,上层要用的时候取一个出来就好,而不关注具体取了哪一个...),只是为了承载各个组件的运行,而各个组件直接的逻辑关系,它们并不关心。但我们可以想象,为了保证整体性,在默认情况下,Android 肯定倾向于将同一Task、同一应用的各个组件扔进同一个进程内,但是当然,出于效率考虑,Android也是允许开发者进行配置。

Android中,整体的(将影响其中各个组件...)和底下各个组件,都可以设置属性,相同属性的组件将扔到同一个进程中运行。最常见的使用场景,是通过配置的process属性,将不同的相关应用,塞进一个进程,使得它们可以同生共死。还有就是将经常和某个 Service组件进行通信的组件,放入同一个进程,因为与Service通信是个密集操作,走的是RPC,开销不小,通过配置,可以变成进程内的直接引用,消耗颇小。

除了通过属性,不同的组件还有一些特殊的配置项,以Content Provider为例(通过项进行配置...)。项有一个mutiprocess的属性,默认值为false,这意味着Content

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Android 任务 进程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接