Posted on 2011-09-02 13:11
oathleo 閱讀(319)
評論(0) 編輯 收藏 所屬分類:
Android
<activity android:name=".LoginActivity" android:label="@string/app_name" android:launchMode="singleTask">
launchmode4種模式:
1,standard:
如果從A跳到A,intent5次,task里5個activity;
2,single Top:
如果從A 跳B,再從B跳A,如果此時棧頂為A,則不創建新實例,直接把Intent給A,但如果棧頂不是A,則還要創建A的實例
3,singleTask
如果從A跳B,再從B跳A,無論是否棧頂棧底,只要A在,則將Intent給A,不會創建A的新實例;
4,singleInstance
不同于前3種模式,前3種只是在同一個task的,而實例化的策略不同。這種模式下的activity會單獨存在一個task下。
現成的例子是google地圖。比如我有一個應用是導游方面的,其中調用的google地圖Activity。那么現在我比如按home(后臺 activity onstop,back是finish)鍵,然后到應用列表中打開google地圖,你會發現顯示的就是剛才的地圖,實際上是同一個Activity。
如果使用上面三種模式,是無法實現這個需求的。google地圖應用中有多個上下文Activity,比如路線查詢等的,導游應用也有一些上下文Activity。在各自應用中回退要回退到各自的上下文Activity中。
總結:
1 2:會創建新實例
3 4:不會創建新實例
123:activity的taskid相同
4:activity的taskid不同。被分到單獨一個task中