Task and Back Stack

来源:互联网 发布:缪雪峰python基础教程 编辑:程序博客网 时间:2024/05/18 12:30

基本概念

Task

Task是一系列Activity的集合, 用户通过与这些Activity交互来完成一个任务(比如发送邮件).Task主要有两种状态, Foreground和Background. 当Task在后台的时候, BackStack不会被破坏.

只有当再后台的任务过多的时候, 系统会通过销毁Task的方法来释放内存资源. 这样会导致Activity的状态丢失

Back Stack

Task包含的Activity通过一个栈来管理, 这个栈就是Back Stack. 入栈的顺序就是Activity打开的顺序.
跟普通的Stack一样, Back Stack只支持Push和Pop, 不能支持重排序.

Activity切换时, Back Stack的状态变化:
Activity切换时, Back Stack的状态变化

Task的启动和销毁

-启动:HomeScreen开始, 当用户点击图标的时候会将Application对应的Task放到前台来, 如果没有对应的Task, 则启动一个新的Task. Main Activity被压入栈中.
-销毁:当最后一个Activity从BackStack中被移除后,Task不再存在.

Task的默认行为

  • 当Activity A启动Activity B, A会进入stop状态, 但是系统会记录A的状态. 当用户在B中点返回后, A会恢复到被保留的状态.
  • 当用户通过按Home键离开一个Task时, 当前的Activity进入Stop状态, 整个task进入后台. 系统会保存Task的BackStack中所有Activity的状态, 当用户回到该Task时, 恢复Stack中最上的一个Activity.
  • 如果用户按Back键离开Activity时, Activity从stack中被抛出并销毁, 系统不会保留Activity的状态.
0 0