Android 开发文档 程序基础——Activities and Tasks
2010-06-19 04:19:00 来源:WEB开发网正如前文所说,一个activity可以运行另一个,包括另一个程序中定义的。
对用户来说,看起来似乎这个其他程序的activity是你的程序的一部分,即使它由其他程序定义,并运行在其他程序进程中。android通过让所有的actiivty在同一个Task中来实现这个用户体验。
简单的说,Task对用户来说就是一个“程序”,是一组相互联系的activity排列在一个stack中。stack中的root activity是开始这个task的activity。一般来说就是用户在程序启动器中选择的activity。正在运行或者用户正在操作的 activity处在stack顶端。当一个activity启动了另一个,新的activity就被放在了stack的上面,变成了运行中的 activity。前一个保持在stack中。当用户按了back键,前端的activity就弹出了stack,前一个activity继续成为运行中的activity。
stack含有对象,所以如果一个task有一个以上同一个activity子类的实例,例如多地图,stack会给每个实例提供独立的入口?entry。
stack中的activity从不重新排列,只是推入或弹出。
task是activity的stack,不是类或者manifest中的组件。所以没有办法单独给tactivity的task赋值。整体赋给task的值实际上是给了root activity。
task中所有的activity作为一个unit移动。task可以完整的被放在前台或者后台。
这儿有一个比较重要的例子
假如有一个含有四个activity的task,一个在前端,三个在后面。用户按了home键,来到程序启动器,选择了一个新的程序,也就是一个新的task。现在的task就转到了后台,而新task的root activity显示了出来。然后,一段比较短的时间后(可能时间长了前面的任务就自动结束了,译者buhutuu.cn注),用户回到了主屏幕,再次运行之前的程序。这时含有四个activity的task转到了前台。当用户按back键,屏幕并不会显示用户刚刚离开的 activity,也就是第二个task的 root activity,而是将现在这个stack顶端的activity移除,将这个stack的前一个activity显示出来。
task和activity的行为都是改变的。task中的activity的相互联系,以及activity的行为,都由启动activity的Intent对象与manifest中activity元素属性的相互影响进行控制。
原文
Activities and Tasks
As noted earlier, one activity can start another, including one defined in a different application. Suppose, for example, that you’d like to let users
更多精彩
赞助商链接