5.4.2 组件的任务黏度
组件的任务黏度(Task Affinity),指的是该组件期望和哪些组件分配到同一任务中。组件的任务黏度,通过组件配置项的andorid:taskAffinity属性来设置,该组件的值是目标的任务名称,期望放入同一个任务中的组件,会采用同样的任务名称,比如:
<activity android:name="anAcitivity"
android:taskAffinity="myTask"/>
<activity android:name="AnotherActivity"
android:taskAffinity="myTask"/>
…
仅通过设置android:taskAffinity,并不能发挥任何效果,要体现出组件任务黏度的作用,还需要配合其他属性或标志位。
一种方式是将组件配置项的属性android:allowTaskReparenting设置为true,此时,如果具有相同任务黏度的组件切换至前台,不论该组件对象原来属于哪个任务,都会立刻投入到任务名相同的任务中去。
还有一种方式,是通过Intent对象的Activity.FLAG_ACTIVITY_NEW_TASK标志位。通常情况下,Activity.FLAG_ACTIVITY_NEW_TASK标志位会让实现组件作为任务根组件构造新的任务来容纳它,但如果该实现组件的android:taskAffinity属性已被设置,它会先寻找具有同样任务名的任务是否已经存在,如果存在,就不再构造新的任务,而是直接跳往该任务中。
开发者可以根据其需求设置组件的任务黏度,使得组件与任务的关系变得更为丰富多彩,把相关联的组件对象关系变得更为密切。