Android学习笔记13——任务和回退栈(1)

        一个应用通常包含多个Activity。每一个Activity应该围绕着所要表现的动作进行设计并且能够启动其他的Activity。例如,一个邮件的应用程序可能有一个Activity用来展示邮件列表,一个Activity用来展示每一个邮件的详情。有时候一个Activity甚至可以启动其他应用的Activity.例如,如果你想要发送一个邮件,你可以定义一个send动作的action并且携带一些数据(例如邮件地址和一条信息),这样,另一个定义了包含这种意图的应用程序的Activity就会打开被打开来响应这个动作。在这个时候,这个intent就会发送一条邮件,一个email应用程序的activity启动。当这个email被发送的时候回到你的Activity,看起来就像它是应用程序的一部分。即使这些Activity是属于不同的应用程序,Android依靠把些Activity放到同一个任务(Task)中来实现用户体验的无缝结合。

      一个Task是为了表现特定工作的一系列用于用户交互的Activity的组合。这些Activtiy以被打开的顺序存储在栈中。

     对于大多数Task来说,设备主屏幕是开始的地方。当用户触摸一个应用程序的图标时,这个应用程序的Task就会到前台。如果这个这个应用程序的任务,那么就会创造一个新的的task,并且这个应用程序中被叫做‘main’的Activtiy会作为根Activtiy放入到Task中。而当当前的Activity启动一个新的Activity时,这个新的Activity就会被压入到栈顶并获取到焦点。而前一个Activity仍然在栈中,只是它停止了,并且系统会保存用户界面的当前的状态。当用户点击回退健时,当前的Activity从栈顶弹出(这个Activity被销毁)而前一个Activity就会恢复焦点并且用户界面的状态也恢复过来。栈中的Activity从来不会准备,仅仅从栈中压入和弹出。

这样如果用户继续点击回退按钮,那么在栈中的每一个Activity都会被弹出而恢复到前一个直到回到主界面。当所有的Activity都从栈中移除的时候,这个Task也就不存在了。

一个Task是一个复合的,当用户开启一个新任务或者通过Home按钮回到主界面时能够运行在后台的单元。但是当运行在后台时这个Task中的全部的Activity都会停止。然而这个Task的回退栈仍然是有效的——这个Task只是在其他Task发生的时候失去焦点而已。一个Task能返回到前台因此能够从这个Task离开的地方重现。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值