Activity的LaunchMode應用場景思考


1. 有哪幾種類型?分別有什麼用?
standard,創建一個新的Activity。
singleTop,棧頂不是該類型的Activity,創建一個新的Activity。否則,onNewIntent。
singleTask,回退棧中沒有該類型的Activity,創建Activity,否則,onNewIntent+ClearTop。
singleInstance,回退棧中,只有這一個Activity,沒有其他Activity。


2. 應用場景如何?
singleTop適合接收通知啓動的內容顯示頁面。
例如,某個新聞客戶端的新聞內容頁面,如果收到10個新聞推送,每次都打開一個新聞內容頁面是很煩人的。
singleTask適合作爲程序入口點。
例如瀏覽器的主界面。不管從多少個應用啓動瀏覽器,只會啓動主界面一次,其餘情況都會走onNewIntent,並且會清空主界面上面的其他頁面。
singleInstance適合需要與程序分離開的頁面。
例如鬧鈴提醒,將鬧鈴提醒與鬧鈴設置分離。
singleInstance不要用於中間頁面,如果用於中間頁面,跳轉會有問題,比如:A -> B (singleInstance) -> C,完全退出後,在此啓動,首先打開的是B。

3. TaskAffinity對LaunchMode的影響
不指定TaskAffinity,singleTask會在默認的task 中執行,這個符合預期,一般也都是這麼用的,不需要指定。
不指定TaskAffinity,singleInstance之後啓動的頁面不能放倒singleInstance所在那個task中,會放倒默認的task中,不過一般singleInstance也不適合作爲程序中間頁。
這篇文章對taskaffinity的說明還不錯,這個見過,不過自己還真沒用過。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章