[Android] Activity栈和Task

Activity栈浏览器

当用户在Application中,从一个Activity跳到另外一个时,Android系统会 保存一个用户访问Activity的线性导航历史。 这就是activity栈,也被称为返回栈。 通常来讲,当用户运行一个新的Activity,这个Activity就会被加到Activity栈里。所以,当用户 按BACK键的时候,栈中的上一个Activity就会被展现出来。 用户能够一直按BACK键,直到返回到了主屏。 返回操做可使用户从当前Task回到上一个Task。 用户能够在应用管理器、主屏、或者“最近Task”屏幕,恢复到刚刚的Task。只有Activity能够加到Activity栈里去,其它的,包括View、Window、Menu或者Dialog都不行。 这就是说,假设,界面A跳到界面B,而后用户能够用BACK跳回界面A。这种状况下,A和B都要被实现成Activity。 这个规则有一个例外的状况。那就是除非你的应用 控制了BACK键而且本身管理界面导航。spa


Task图片

Task就是一个栈
it

一个Task是用户能够完成一个特定目标的一组Activity。与Activity属于哪一个Application无关。 除非明确地新建一个Task,(参考打断Task),用户启动的全部Activity都默认是当前Task的一部分。 须要注意的是,这些Activity可能属于任何一个Application — 属于同一个Application或者属于不一样的Application。 这就是说,一个Task能够是,从联系人列表开始,而后选择一个邮箱地址(经过电邮Activity),而后附加一个照片(经过图片Activity)。 联系人列表、电邮、图片,这些都存在于不一样的Activity中。
io

启动Task的Activity被称做根Activity。 一般,Task是从应用管理器、主屏或者最近Task(长按HOME键)开始的。 用户能够经过点击根Activity的图标回到Task里去,就像启动这个Activity同样。 在这个Task中,BACK键能够回到这个Task的前一个Activity里。 Activity栈能够由一个或多个Task组成。方法


打断Task地图

 Task的一个重要的特性就是,用户能够中断他当前正在作的事(他的任务),去进行另外一个Task,而后能够返回到原来的那个Task去完成它。 这个特性的意图,就是用户能够同时运行多个任务,而且能够在这些任务间切换。 有两种主要的的方法离开一个Task,这两种状况中,应该让用户可以返回到他们离开的那个任务:
用户被Notification打断 – 来了一个通知,用户开始关注处理这个通知
用户决定开始另外一个任务 - 用户按了HOME键,而后开始了另外一个Application

固然,规则老是有例外。除了上面提到了两种方法,确实存在第三种方法开始一个新任务,即,在代码中startActivity的时候,定义它要开始一个新 Task。 地图和浏览器两个应用就是这么作的。 例如,在电邮中点击一个地址,会在新Task调出地图Activity,在电邮中点击一个连接,会在新的Task中调出浏览器。 在这种状况下,BACK键会回到上一个Activity(另外一个Task中的电邮Activity),由于它不是从主屏启动的。

activity

相关文章
相关标签/搜索