关于Activity常用的知识(二)---任务和堆栈

一、任务定义

指在执行特定作业时与用户交互的一系列Activity,这些Activity按照自己的打开顺序排列在堆栈(也叫返回栈)中。

  • Android任务栈又称为Task,具有后进先出的特性,用于存放Activity组件;
  • 只有处于栈顶的Activity才可以与用户交互;
  • 当退出应用时,会清空任务栈,此时任务栈才会被销毁;
  • 任务栈也可以转移到后台,其中所有的Activity任然存在,只是失去了焦点;
  • 一个应用中可以不止一个任务栈,一个任务栈中的Activity可以来自不同的应用;
二、定义启动模式
  • 使用清单文件
  • 使用Intent标志
  • 使用Intent标志定义优先级高于使用清单文件定义
三、启动模式
SingleTop:栈顶复用模式
  • 描述:在这种模式下,当启动一个新的Activity时,如果栈顶有这个Activity的实例,会复用这个实例并不会创建新实例;如果这个实例没有位于栈顶,那么还是会在该任务中创建一个Activity新的实例。
  • 效果:栈顶已有该Activity的实例,系统会通过调用该实例的onNewInstance(Intent intent)方法向其传送Intent,而不是创建新实例。从intent参数中可以拿到相关的启动数据。Activity的onCreate、onStart方法不会被调用。
  • 场景:接收到消息后显示的页面,比如qq接收到消息后弹出的Activity界面;比如新闻客户端收到100个推送,点击推送进入的展示界面,都是同一个Activity只是内容不同而已。
  • 总结:可实现栈内单一实例但前提是该实例必须位于栈顶!!!
SingleTask:栈内复用模式
  • 描述:属于单例模式,这种模式会检测整个栈中是否存在当前需要启动Activity的实例,如果存在就直接将该Activity置于栈顶,不存在会创建并加入栈中。
  • 效果:将该Activity置于栈顶的同时会将该Activity以上的Activity都从任务栈中移除销毁,同时会回调onNewInstance(Intent intent)传递Intent值。
  • 场景:主要用于主架构的Activity,里面有好多的Fragment(如新闻,侧滑,应用主界面),一般不
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值