Activity總共有四種LaunchMode,分別為standard,singleTop,singleTask,singleInstance四種模式。
一、standard 模式
這是默認模式,每次激活activity時都會創建activity實例,并放入任務棧中。使用場景:大多數activity。
二、singleTop 模式
如果在任務棧的棧頂正好存在該activity實例,就重用該實例(會調用實例的onNewIntent()),否則就會創建新的實例并放入棧頂,即使棧中已經存在該activity的實例,只要不在棧頂,都會創建新的實例。使用場景如新聞類或者閱讀類APP的內容頁面。
三、singleTask 模式
如果在棧中已經有該activity的實例,就重用該實例(會調用實例的onNewIntent())。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移出棧。如果棧中不存在該實例,將會創建新的實例放入棧中。使用場景如瀏覽器的主界面。不管從多少個應用啟動瀏覽器,只會啟動主界面一次,其余情況都會走onNewIntent,并且會清空主界面上面的其他界面。
四、singleInstance 模式
在一個新棧中創建該activity的實例,并讓多個應用共享該棧的activity實例。一旦該activity的實例已經存在于某個棧中,任何應用再激活該activity時都會重用該棧中的實例(會調用實例的onNewIntent())。其效果相當于多個應用共享一個應用,不管誰激活該activity都會進入同一個應用中。使用場景如鬧鈴提醒,將鬧鈴提醒與鬧鈴設置分離。singleInstance不要用于中間頁面,如果用于中間頁面,跳轉會有問題,比如A->B(singleInstance)->C,完全退出后,再次啟動,首先打開的是B。