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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daipeng123456789/article/details/51175153

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

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

taskAffinity属性

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

Taskaffinity属性使用小结

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

关于Android TaskAffinity的那些事儿

正常情况下,如果应用已经启动,并将应用切到后台,在通知栏中调起页面时,该应用的Task首先会被调起,然后会将我们的Activity显示在这个Task的顶端。手机百度的通知栏里面有一个快速搜索栏,无论什...
  • goodlixueyong
  • goodlixueyong
  • 2015-11-03 19:23:25
  • 4302

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

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

对android的android:taskAffinity初识

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

Activity之taskAffinity属性、allowTaskReparenting属性和Android退出整个应用解决方案

singleInstance: 当ActivityX使用了singleInstance之后: 会重建一个单独的Task栈用来放置ActivityX。 该Task栈只能放置ActivityX,即使其他的...
  • iromkoear
  • iromkoear
  • 2017-04-16 23:47:59
  • 2485

singleTask 与 taskAffinity 缠绵的那些事

这里说的也适用于其它Activity启动时Intent中设置了FLAG_ACTIVITY_NEW_TASK标志。 今天没事翻看android sdk的文档,发现在网上关于launchMode...
  • dfqin
  • dfqin
  • 2012-04-20 15:44:49
  • 2846

android:taskAffinity使用详解

android:taskAffinity       Activity为Task拥有的一个affinity。拥有相同的affinity的Activity理论上属于相同的Task(在用户的角度是相同的...
  • chr8880
  • chr8880
  • 2012-09-04 23:00:47
  • 803

android:taskAffinity属性的用法

Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系。我们知道,一般情况下在同一个应用中,启动的Activity都在同一个Task中,它们在该Tas...
  • chenshijun0101
  • chenshijun0101
  • 2013-07-22 15:00:05
  • 12708
收藏助手
不良信息举报
您举报文章:Taskaffinity属性使用小结
举报原因:
原因补充:

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