四種LaunchMode及其使用場景瀏覽器
standard 模式it
這是默認模式,每次激活Activity時都會建立Activity實例,並放入當前任務棧中。使用場景:大多數Activity。vi
singleTop 模式閱讀
singleTop模式的Activity, 僅當該Activity已經在Task的頂部了, 纔會複用. 複用時onPause, 而後onNewIntent喚起, 走onResume流程. 不然都要建立新的實例, 放進Task中。使用場景如新聞類或者閱讀類App的內容頁面。界面
singleTask 模式實例
若是在棧中已經有該Activity的實例,就重用該實例(會調用實例的onPause() -- onNewIntent() --onResume())。重用時,會讓該實例回到棧頂,所以在它上面的實例將會被移出棧。若是棧中不存在該實例,將會建立新的實例放入棧中。使用場景如瀏覽器的主界面。無論從多少個應用啓動瀏覽器,只會啓動主界面一次,其他狀況都會走onNewIntent,而且會清空主界面上面的其餘頁面。
singleInstance 模式
在一個新棧中建立該Activity的實例,並讓多個應用共享該棧中的該Activity實例。一旦該模式的Activity實例已經存在於某個棧中,任何應用再激活該Activity時都會重用該棧中的實例( 會調用實例的 onNewIntent() )。其效果至關於多個應用共享一個應用,無論誰激活該 Activity 都會進入同一個應用中。使用場景如鬧鈴提醒,將鬧鈴提醒與鬧鈴設置分離。singleInstance不要用於中間頁面,若是用於中間頁面,跳轉會有問題,好比:A -> B (singleInstance) -> C,徹底退出後,在此啓動,首先打開的是B。