Activity總共有四種LaunchMode丈屹,分別為standard,singleTop伶棒,singleTask旺垒,singleInstance四種模式。
一肤无、standard 模式
這是默認模式先蒋,每次激活activity時都會創(chuàng)建activity實例,并放入任務棧中宛渐。使用場景:大多數(shù)activity竞漾。
二眯搭、singleTop 模式
如果在任務棧的棧頂正好存在該activity實例,就重用該實例(會調用實例的onNewIntent())业岁,否則就會創(chuàng)建新的實例并放入棧頂鳞仙,即使棧中已經存在該activity的實例,只要不在棧頂叨襟,都會創(chuàng)建新的實例繁扎。使用場景如新聞類或者閱讀類APP的內容頁面。
三糊闽、singleTask 模式
如果在棧中已經有該activity的實例梳玫,就重用該實例(會調用實例的onNewIntent())。重用時右犹,會讓該實例回到棧頂提澎,因此在它上面的實例將會被移出棧。如果棧中不存在該實例念链,將會創(chuàng)建新的實例放入棧中盼忌。使用場景如瀏覽器的主界面。不管從多少個應用啟動瀏覽器掂墓,只會啟動主界面一次谦纱,其余情況都會走onNewIntent,并且會清空主界面上面的其他界面君编。
四跨嘉、singleInstance 模式
在一個新棧中創(chuàng)建該activity的實例,并讓多個應用共享該棧的activity實例吃嘿。一旦該activity的實例已經存在于某個棧中祠乃,任何應用再激活該activity時都會重用該棧中的實例(會調用實例的onNewIntent())。其效果相當于多個應用共享一個應用兑燥,不管誰激活該activity都會進入同一個應用中亮瓷。使用場景如鬧鈴提醒,將鬧鈴提醒與鬧鈴設置分離降瞳。singleInstance不要用于中間頁面嘱支,如果用于中間頁面,跳轉會有問題挣饥,比如A->B(singleInstance)->C斗塘,完全退出后,再次啟動亮靴,首先打開的是B馍盟。