Tasks and Back Stack(未完成)

原文地址:

http://developer.android.com/guide/components/tasks-and-back-stack.html


***********************************************************************************************

两行星号间的内容不是由原文翻译过来的,个人建议记住这几句就够了

* 规则:

* 1、activity进入前台,管理他的Task也成为前台Task

* 2、按硬Back键,依次回退当前Task中的Activity,全部回退以后再到下一个Task

* 四种模式:

* 1、standard:标准模式,每次启动都会新起动一个实例

* 2、singleTop:如果已经在栈顶的实例,就不会启动,否则启动一个新的实例

* 3、singleTask:如果已经有实例存在某个Task中,这个Task成为前台Task,并且Task中这个实例之上的所有ActivityRecord出栈

* 4、singleInstance:单独占有一个Task,全局只存在一个实例

* 工具:

* adb shell dumpsys activity

***********************************************************************************************


应用通常包含多个Activity。每个activity的设计应该围绕一个特定的动作,用户可以执行并且可以启动其他的activity。比如,一个邮件应用可能有一个activity去显示新邮件的列表,当用户选择其中一项,一个新的activity打开去查看对应的邮件。一个activity甚至可以启动设备上其他应用的activity。比如,如果你的应用期望发送一封电子邮件,你可以定义一个intent执行"send"的action,并且包含一些数据,比如email地址和信息。其他的应用的声明处理这种intent的某个activity会被打开。在这种情况下,intent是去发送一个电子邮件,所以一个email应用的"compost" activity被启动(如果多个activity支持同一个intent,系统会让用户选择使用哪一个)。当email被发送后,回到你的activity,看起来email activity是你的应用的一部分。尽管activity可能来自不同的应用,Android通过在同一个task维护这两个activity,给用户提供无缝的用户体验。

一个task是执行某个特定工作时和用户交互的activity集合。activity被排列在一个stack中("back stack"),按照每个activity启动的顺序。

设备的Home页是很多task启动的地方。当用户在应用启动器(或者Home screen的快捷方式)点击某一个图标,应用的task回到前台。如果应用没有task存在(最近这个应用没有被使用),一个新的task将被创建,这个应用的main activity作为stack的root activity。

当前的activity启动另外一个,新的应用将会被push到stack的顶部,获得焦点。之前的activity仍然保留在stack中,但是处于stop状态。当一个activity stop,系统保留它的用户接口的当前状态。当用户按了Back键,当前activity从stack的顶部被弹出(activity被销毁),回到之前的activity(之前它的UI状态恢复)。在Stack中的activity从来不会被重排,仅会被push或者从stack中pop出来——当被当前的activity启动后push到stack,当用户使用Back键离开的时候从stack中pop出来。因此,back stack以后进先出的对象结构操作。Figure 1通过一个时间轴显示这个过程,每个时间点的back stack的activity。

Figure 1 代表一个task中的新的activity如何添加项到back stack。当用户点击Back按钮,当前的activity被销毁,回到之前的activity


如果用户继续点击Back,stack的每个activity弹出,显示前面的那个,直到用户回到Home screen(或者回到task开始的时候运行的activity)。当stack中的所有acivity被移除,task不再存在。


Figure 2 两个task:Task B在前台接收用户交互操作,Task A在后台,等待被恢复



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值