Taskaffinity属性使用小结

原创 2016年04月17日 20:31:59

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是将参数添加上去。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中Activity四种启动模式和taskAffinity属性详解

在android应用开发中,打造良好的用户体验是非常重要的。而在用户体验中,界面的引导和跳转是值得深入研究的重要内容。在开发中,与界面跳转联系比较紧密的概念是Task(任务)和Back Stack(回...
  • brave2211
  • brave2211
  • 2013年09月06日 23:40
  • 49249

taskAffinity属性

Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系。我们知道,一般情况下在同一个应用中,启动的Activity都在同一个Task中,它们在该Tas...
  • lygglobetech
  • lygglobetech
  • 2011年07月12日 16:46
  • 32665

Taskaffinity属性使用小结

TaskAffinity属性小结最近在项目中用到了TaskAffinity属性,发现这个还是挺有意思,可以用来控制activity所属的任务栈。但同时只设置这一个属性又是不能完成功能的,需要与其它属性...
  • daipeng123456789
  • daipeng123456789
  • 2016年04月17日 20:31
  • 3193

Task Affinity

在某些情况下,Android需要知道一个Activity属于哪个Task,即使它没有被启动到一个具体的Task里。这是通过任务共用性(Affinities)完成的。任务共用性(Affinities)为...
  • oqqZuo123456565
  • oqqZuo123456565
  • 2015年04月27日 17:49
  • 309

基础总结篇之三:Activity的task相关

古人學問無遺力,少壯工夫老始成。紙上得來終覺淺,絕知此事要躬行。南宋.陸遊《冬夜讀書示子聿(yù)》 软件行业也是一样,多少前辈不遗余力的奋斗才出现了软件行业的繁荣的景象,其中已有不少成为大师级人物。...
  • liuhe688
  • liuhe688
  • 2011年09月30日 15:36
  • 48995

android:taskAffinity属性的用法

Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系。我们知道,一般情况下在同一个应用中,启动的Activity都在同一个Task中,它们在该Tas...
  • chenshijun0101
  • chenshijun0101
  • 2013年07月22日 15:00
  • 12594

对android的android:taskAffinity初识

activity标签中有一个属性为android:taskAffinity=“String”。 如果不设置此属性,默认一个应用程序只有一个栈,这个栈以应用包命为单位。 下面是我做的三个实验: 1、新建...
  • buptlzx
  • buptlzx
  • 2013年08月19日 14:05
  • 10447

Android关于Task的一些实践之SingleTask, SingleInstance和TaskAffinity

上一篇文章粗略地介绍了一下关于Android中Task的基本知识,不过实践才是检验真理的唯一标准,所以,今天就来试验一下Task中的launchMode是否真的实现了文档所说的那样。首先,定义三个Ac...
  • foolsheep
  • foolsheep
  • 2014年04月22日 11:42
  • 3391

一个项目搞明白Android 启动模式和taskAffinity

一个项目搞明白Android 启动模式和taskAffinity新建两个Activity,带一个TextView和两个Button,TextView用于显示当前Activity, 两个Button分别...
  • zjwfan
  • zjwfan
  • 2016年07月27日 17:33
  • 522

关于Android TaskAffinity的那些事儿

正常情况下,如果应用已经启动,并将应用切到后台,在通知栏中调起页面时,该应用的Task首先会被调起,然后会将我们的Activity显示在这个Task的顶端。手机百度的通知栏里面有一个快速搜索栏,无论什...
  • goodlixueyong
  • goodlixueyong
  • 2015年11月03日 19:23
  • 3675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Taskaffinity属性使用小结
举报原因:
原因补充:

(最多只允许输入30个字)