Activity的LaunchMode應用場景思考
阿新 • • 發佈:2019-02-06
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的說明還不錯,這個見過,不過自己還真沒用過。
singleTask,回退棧中沒有該型別的Activity,建立Activity,否則,onNewIntent+ClearTop。
singleInstance,回退棧中,只有這一個Activity,沒有其他Activity。
2. 應用場景如何? singleTop適合接收通知啟動的內容顯示頁面。 例如,某個新聞客戶端的新聞內容頁面,如果收到10個新聞推送,每次都開啟一個新聞內容頁面是很煩人的。 singleTask適合作為程式入口點。
這篇文章對taskaffinity的說明還不錯,這個見過,不過自己還真沒用過。