為了看出task是否相同,請在原本程式中的
txt1_history.setText(mString + this.toString() + " --> \n");
利用getTaskId調整為
txt1_history.setText(mString + this.toString() + " , taskId : " + this.getTaskId()+" --> \n");
A2 和A3也是以此類推調整程式。
然後在AndroidManifest.xml中,把A2改為
<activity android:name=".A2" android:label="@string/app_name" android:launchMode="singleTask"/>
接下來啟動程式,activity順序為A1->A3->A2->A1->A3->A2,結果如下
A2的taskID是26,和前面activity一樣 |
當A3到A2時,直接跳到剛才產生的A2 |
因 為A2是singleTask,所以不論從那個activity,只要用startActivity呼叫A2時,都會去找出剛才已經產生過的A2,而不會 重新產生一個實體。而且A2之後產生的activity也都會跟著消失,此時A2在activity stack的最頂層。此時activity stack由底到頂應該是A1,A3,A2。
接下來在A2開始按Back Key退回去,順序會是A2 -> A3 -> A1
假設今天是把A1設為singleTask的話,會有什麼效果?
想像今天的程式有一個類似主畫面(選單)的activity,不管去到那個activity都可以用startActivity回到這個主畫面,而且希望回到主畫面後,如果按下Back Key就可以結束整個程式的話,就可以對這個主畫面設定為singleTask。
你好~想請教你一個關於singleTask的問題, 在singleTask的官方文件中有提到 "The system creates a new task and instantiates the activity at the root of the new task", 但以你這邊的實驗看到的結果好像不太符合, 一方面它並沒有create new task也沒有at the root of the new task, 請問這是什麼原因呢? 就官方文件來理解, singleTask和singleInstance的唯一差別是, singleInstance的task裡只會有它自己一個成員, 而singleTask是有可能含有其他activity的
回覆刪除感謝~