Taskaffinity属性使用小结
来源:互联网 发布:linux find 文件大小 编辑:程序博客网 时间:2024/05/14 05:17
TaskAffinity属性小结
最近在项目中用到了TaskAffinity属性,发现这个还是挺有意思,可以用来控制activity所属的任务栈。但同时只设置这一个属性又是不能完成功能的,需要与其它属性相配合。
一.通过配置方式来实现TaskAffinity来实现
上边说到要想使TaskAffinity属性生效,要与其它属性相配合。在配置文件中,需要设置activity的启动模式为singleTask或singleInstance才能生效(其实singleInstance本来就会在新Task中)
<activity android:name=".bActivity" android:launchMode="singleTask" android:taskAffinity="taskName"/>
二.通过动态的方式实现TaskAffinity属性
通过上述的配置,可以实现TaskAffinity属性。但是这样每次启动该Activity都会在TaskAffinity指定的栈中启动。有时候可能会希望该activity在特殊情况下才在TaskAffinity指定的栈中启动,大部分时候还是在原有的任务栈中启动,这个时候就需要动态方式来实现TaskAffinity属性。
在配置文件中,只制定TaskAffinity属性,而不制定launchMode的属性为singleTask。
<activity android:name=".bActivity" android:taskAffinity="taskName"/>
这样通过正常方式启动该Activity时,该Activity就会在原有任务栈中启动(启动该Activity的任务栈中)。若想在taskAffinity属性生效,需要在启动该Activity时设置Flag为FLAG_ACTIVITY_NEW_TASK。
Intent intent = new Intent(aAvtivity.this, bActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);
当TaskAffinity生效时,如已经存在相应名称的任务栈,则不会新建栈,而是在该栈的栈顶建立相应activity;如果没有相应名称的任务栈,就会建立对应名称的新的任务栈。
另外说明一点,setFlags和addFlags的区别是:setFlags会直接将原来的Flag直接替换掉;而addFlags是将参数添加上去。
- Taskaffinity属性使用小结
- TaskAffinity属性小结
- 关于taskAffinity属性的使用
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- taskAffinity属性
- Activity的taskAffinity属性
- Activity的taskAffinity属性
- Activity的taskAffinity属性
- Java IO流
- 二叉树系列(1)已知二叉树的中序遍历和前序遍历,如何求后序遍历
- MBProgressHUD 使用的KVO分析
- CSS3特效之转化(transform)和过渡(transition)
- 解释性和编译型语言的区别
- Taskaffinity属性使用小结
- Java学习-9.接口
- 菜鸟日志4.16 初识Linux C
- C语言隐式数据类型转换
- Windows下安装rabbitmq及安装openssl
- VMware共享文件夹编译出现“Value too large for defined data type”错误的解决办法
- Bootstrap简介
- python通过邮箱发短信笑话
- WIN32汇编语言中位图的使用