天天看點

對android的android:taskAffinity初識

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頁面,跟預期一緻。

繼續閱讀