原文地址:http://henzil.easymorse.com/?p=481
android中AndroidManifest.xml文件,
activity标签中有一个属性为android:taskAffinity=“String”。
如果不设置此属性,默认一个应用程序只有一个栈,这个栈以应用包命为单位。
下面是我做的三个实验:
1、新建两个工程,application01和application02
application01设置android:taskAffinity="aaa.aaa" android:allowTaskReparenting="true"
application02也设置android:taskAffinity="aaa.aaa" android:allowTaskReparenting="true"
先运行application01,然后点击home键,让application01运行在后台,再运行application02,现在按返回键,当前显示的是application01的mainActivity,再点返回键,回到home页。
但是长按home键,发现运行过的程序只有application01。
2、紧接着又在此基础上做了另外一个实验,在application01上新建一个secondActivity,设置
android:taskAffinity="aaa.bbb" android:allowTaskReparenting="true"
在mainActivity中startActivity时,设置Intent中flag属性为FLAG_ACTIVITY_NEW_TASK,注意,这里的flag属性必须为new task。
然后运行application01,点击进入secondActivity,点击home键,让程序回到后台,
然后运行application02,点击返回,当前显示的application01中的mainActivity,再点击返回,显示的是application01中secondActivity,跟预期一致。
3、在此基础上堆application01再次修改,增加thirdActivity,设置属性android:taskAffinity="aaa.aaa" android:allowTaskReparenting="true"
并在secondActivity中startActivity时,设置Intent中flag属性为FLAG_ACTIVITY_NEW_TASK;
运行application01,点击进入secondActivity,再进入thirdActivity,点击返回,回到mainActivity,在点击返回,回到secondActivity,再点击返回,回到home页面,跟预期一致。
本文通过三个实验探讨了Android中activity的taskAffinity属性如何影响应用间的任务栈行为。当设置了相同的taskAffinity并允许任务重定向时,不同应用的活动可以共用一个任务栈。通过调整属性和Intent标志,可以实现复杂的任务栈切换效果。
1779

被折叠的 条评论
为什么被折叠?



