activity-栈相关属性
1.启动任务栈
第一种,动作设置为“android.intent.action.MAIN”,类别设置为“android.intent.category.LAUNCHER”,
可以使这个ACT(activity)实例称为一个任务栈的入口,拥有这种类型的intent-filter的ACT类型的图
表和名字也会显示在application launcher中。
如下
<activity android:name="SoundRecorder"
android:launchMode="singleTop"
android:configChanges="orientation|screenSize|keyboardHidden|mnc|mcc"
android:screenOrientation="nosensor"
android:clearTaskOnLaunch="false"
android:theme="@style/SoundRecorderTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
第二种,即是采用用“singleInstance”模式,另外开个一个唯一ACT的栈.
第三种, 在Intent中加入了“FLAG_ACTIVITY_NEW_TASK”。
当传递给startActivity()的Intent对象包含FLAG_ACTIVITY_NEW_TASK标记时,系统会为需要启动的 activity寻找与当前activity不同的task。如果要启动的activity的affinity属性与当前所有的task的 affinity属性都不相同,系统会新建一个带那个affinity属性的task,并将要启动的activity压到新建的task栈中;否则将 activity压入那个affinity属性相同的栈中。
提示:如果“singleInstance”模式同时还加上上面的类型,则当前ACT也是一个单独ACT的任务栈,而应用其他ACT会组成另外一个任务栈
2.启动模式
<activity>标签的launchMode属性可以设置为四种不同的模式:
“standard” :(默认模式)反复创建新实例,如A-B-A-C-D-B-A…依次随便加
“singleTop” : 避免出现类似A-B-C-D-D…,如D采用"singleTop",则是A-B-C-D
“singleTask”: 如A采用"singleTask",则在“standard”中类似A-B-C-D-A任务栈,在“singleTask”只会剩下A,BCD都会被回收
“singleInstance” : 此模式你另外开个一个任务栈,且单独只有一个ACT.主要用于多个应用共享同一个activity。
提示:如果该Activity已经启动了,再次调用该activity就调用OnNewIntent。
3.清理任务栈
默认:如果一个任务栈在很长的一段时间都被用户保持在后台的,那么系统就会将这个任务栈中除了根ACT以外的
其它所有ACT全部清除掉。当用户再将任务栈切换到前台,则只能显示根activity了。
1)alwaysRetainTaskState属性
如果将根ACT的alwaysRetainTaskState属性设置为“true”,则即便一个任务栈在很长的一段时间都被用户
保持在后台的,系统也不会对这个任务栈进行清理。
2)clearTaskOnLaunch属性
如果将根ACT的clearTaskOnLaunch属性设置为“true”,那么只有这个任务栈切换到了后台,那么系统就会
将这个任务栈中除了根ACT以外的其它所有ACT全部清除掉。即和alwaysRetainTaskState的行为完全相反。
3) finishOnTaskLaunch属性
这个属性的行为类似于clearTaskOnLaunch,但是此属性作用于单个的ACT对象,而不是整个任务栈。当这个
任务栈切换到了后台,这个属性可以使任务栈清理包括根ACT在内的任何ACT对象。
4.还复杂点可以加入亲属关系taskAffinity
总结:简单的说,即是开一个(或几个)任务栈,在每个任务栈上添加ACT,遇到“singleTask”的则回到之前存在的ACT,把夹在中间的ACT全部回收
activity-栈相关属性的更多相关文章
- Android Activity task 相关属性
所谓的 task ,是指用户完成某一项任务时与之交互的一组 Activity.比如用户要向开发者汇报 bug,先打开程序主页,然后打开关于页面,再点击报告 bug 按钮,打开编辑邮件页面.当前这三个 ...
- AndroidManifest.xml中<activity></activity>相关属性说明
虽说,从事android开发有一定时间了,对于Activity大家也都不陌生,但是具体的对于Activity中相关属性的含义有必要做一个系统的总结: intent-filteraction: 来指定响 ...
- Activity Intent Flags及Task相关属性
转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...
- Android总结篇系列:Activity Intent Flags及Task相关属性
同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...
- 【转】Android总结篇系列:Activity Intent Flags及Task相关属性
[转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...
- ActivityManagerService数据结构Activity栈管理(二)
ActivityManagerService要管理四大组件,那四大组件就必须在AMS中有存在的形式,这里先从AMS 如何管理Activity 谈起: Activity在AMS 中存在的形式为Activ ...
- Android解析ActivityManagerService(二)ActivityTask和Activity栈管理
前言 关于AMS,原计划是只写一篇文章来介绍,但是AMS功能繁多,一篇文章的篇幅远远不够.这一篇我们接着来学习与AMS相关的ActivityTask和Activity栈管理. 1.ActivitySt ...
- Activity Intent相关FLAG介绍
先首先简单介绍下Task和Activity的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity ...
- Activity栈与任务管理探究1——栈与任务的概述
Activity栈与任务管理探究1--栈与任务的概述 内容概览 1. 前言 2. Activity中的Stack 3. Activity中的Task 4. Activity栈与任务管理基本原则 1. ...
随机推荐
- POJ 3271 BFS (大坑)
被某人拉进了坑 完完全全被坑一天的题-- 题意: 正解思路: 先把每一个点搜一遍 预处理出它能在一步之内到的所有点 并连边 然后用一个类似DP的东西把方案数加起来就搞定了 (其实 也不是很难) 但是 ...
- 如何在Ubuntu14.04中创建Python虚拟环境
在Ubuntu14.04中安装Python相对比较容易些,最简单的安装方法就是apt-get安装了,具体的教程可以戳这篇文章:在Ubuntu14.04中如何安装Python3和切换py2和py3环境. ...
- angularjs input使用ng-model双向绑定无效bug解决
一.问题描述 当我们给input双向绑定变量的时候,使用ng-model有时候会出现无效的情况 二.解决办法 将绑定的变量写成对象的形式 控制器定义变量: $scope.inputText = {va ...
- IDEA 热启动,每次更改代码后不用重启服务
1.ctrl+Shift+Alt+/,选择Registry 2.勾选 compiler.automake.allow.when.app.running(可能不按首字母排序,可以多找找) 3.Setti ...
- Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解
查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...
- Java Web学习总结(10)——Session详解
摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java ...
- android 二次按返回键退出client
android中有的app退出client时弹出对话框的方法,有的是点击二次,第一次是提示用户是否退出client,第二次点击才是真正的退出app.这是用二次点击返回键的时间间隔推断, 今天就实现这简 ...
- php 图片局部打马赛克
php 图片局部打马赛克 原理: 对图片中选定区域的每一像素,添加若干宽度及高度,生成矩型.而每一像素的矩型重叠在一起.就形成了马赛克效果. 本例使用GD库的imagecolorat获取像素颜色,使用 ...
- IOS 以随意点为圆心 旋转UIView
环绕底边中点旋转 UIView本身是支持旋转的,能够用UIView.transform属性实现旋转. The origin of the transform i ...
- android 移植ffmpeg后so库的使用
今天折腾了一天,可算是有所收获,成功的用jni调用了libffmpeg中的一个方法-----avcodec_version(),至于avcodec_version()是干什么用的我不大清楚,应该是获取 ...