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

Android 任务、进程和线程

 2010-07-01 14:54:00 来源:WEB开发网   
核心提示:任务、进程和线程关于Android中的组件和应用,之前涉及,Android 任务、进程和线程,大都是静态的概念,而当一个应用运行起来,但整体的开销将大大的减少,这种舍小家为大家的行为,就难免会需要关心进程、线程这样的概念,在Android中

任务、进程和线程

关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要关心进程、线程这样的概念。在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的。

Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难度,帮助大家更好的进行开发和配置。

任务

在 SDK中关于Task(guide/topics/fundamentals.html#acttask),有一个很好的比方,说,Task就相当于应用(application)的概念。在开发人员眼中,开发一个Android程序,是做一个个独门独户的组件,但对于一般用户而言,它们感知到的,只是一个运行起来的整体应用,这个整体背后,就是Task。

Task,简单的说,就是一组以栈的模式聚集在一起的Activity组件集合。它们有潜在的前后驱关联,新加入的Activity组件,位于栈顶,并仅有在栈顶的Activity,才会有机会与用户进行交互。而当栈顶的 Activity完成使命退出的时候,Task会将其退栈,并让下一个将跑到栈顶的Activity来于用户面对面,直至栈中再无更多 Activity,Task结束。

事件 Task栈

点开Email应用,进入收件箱(Activity A) A

选中一封邮件,点击查看详情(Activity B) AB

点击回复,开始写新邮件(Activity C) ABC

写了几行字,点击选择联系人,进入选择联系人界面(Activity D) ABCD

选择好了联系人,继续写邮件 ABC

写好邮件,发送完成,回到原始邮件 AB

点击返回,回到收件箱 A

退出Email程序 null

如上表所示,是一个实例。从用户从进入邮箱开始,到回复完成,退出应用整个过程的Task栈变化。这是一个标准的栈模式,对于大部分的状况,这样的 Task 模型,足以应付,但是,涉及到实际的性能、开销等问题,就会变得残酷许多。比如,启动一个浏览器,在Android中是一个比较沉重的过程,它需要做很多初始化的工作,并且会有不小的内存开销。但与此同时,用浏览器打开一些内容,又是一般应用都会有的一个需求。设想一下,如果同时有十个运行着的应用(就会对应着是多个Task),都需要启动浏览器,这将是一个多么残酷的场面,十个Task栈都堆积着很雷同的浏览器Activity,是多么华丽的一种浪费啊。于是你会有这样一种设想,浏览器Activity,可不可以作为一个单独的Task而存在,不管是来自那个Task的请求,浏览器的Task,都不会归并过去。这样,虽然浏览器Activity本身需要维系的状态更多了,但整体的开销将大大的减少,这种舍小家为大家的行为,还是很值得歌颂的。

1 2 3 4 5 6  下一页

Tags:Android 任务 进程

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