affinity本意是“和什么相似/一样”,这个一样是针对任务栈而言,所以也翻译为“任务相关性”。
affinity可以告诉所在的task,自己是这个task中的一员;拥有相同affinity的多个
Activity在理论上同属于一个task,一个任务的affinity由根Activity的affinity值所决定。
也就是说,对于一个任务来说,其affinity值是由FirstActivity决定的。而我们一般并没有在FirstActivity的声明中设置taskAffinity属性,因此默认情况下,一个应用内的所有Activity都具有相同的affinity,都是从Application(参考<application>的taskAffinity属性)继承而来,而Application默认的affinity是<manifest>中的包名,我们可以为<application>设置taskAffinity属性值,这样可以应用到<application>下的所有<activity>,也可以单独为某个Activity设置taskAffinity。
例如:在系统自带的Browser中,package为com.android.browser,但是<application>却自定义一个taskAffinity属性值:
<application android:name="Browser"
android:label="@string/application_name"
android:icon="@drawable/ic_launcher_browser"
android:backupAgent=".BrowserBackupAgent"
android:taskAffinity="android.task.browser" >