Android-Activity啟動模式-應用場景
在上一篇部落格中,Android-Activity啟動模式(launchMode),就介紹了Activity四種啟動模式的特點與使用等,但是到底什麼樣子的場景,去使用什麼樣子的啟動模式呢
Activity啟動模式分為四種:
如果不配置:launchMode,預設就是:standard 標準的
standard 標準的
singleTop 獨佔頂端
singleTask 單任務
singleInstance 單例項
任務棧存放Activity引用 任務棧 進棧 出棧
最上面的Activity,可以稱為:TopActivity 最頂端的Activity
最下面的Activity,可以稱為:BaseActivity 最底端的Activity
Activity啟動模式,不出意外,使用最多的一定是預設的,standard 標準的
但是standard 標準的 這種啟動模式,每啟動一個Activity 就進棧一個Activity,這樣有些情況下是不合理的,我的Activity在最頂端就沒有必要,再次啟動進棧一個 或者啟動進棧多個
,Activity的引用重複,這樣不利於ActivityManager的管理,任務棧Activity引用重複,當點選返回Back操作的時候,體驗非常不好;
在App應用中,在TopActivity會被再次啟動或者多次啟動的時候,就可以採用singleTop來解決,任務棧Activity引用的重複,利於ActivityManager的管理,讓體驗更加好等...
Android作業系統的 瀏覽器 書籤 Activity的啟動模式 就是採用 singleTop
一般情況下,應用程式的主介面(MainActiviy),的啟動模式是SingleTask,為什麼呢,請看以下圖:
Android作業系統 瀏覽器的主介面Activity的啟動模式就是 singleTask
singleInstance 單例項,一個Activity被其他方多次呼叫(如果不用singleInstance,那會很混亂,好幾個人打電話過來怎麼辦,所以需要singleInstance),
並且這個Activity對效能要求高
Android作業系統/package/apps/Phone/AndroidManifest.xml 找到通話介面
Android作業系統的 通話介面Activity 同時接聽兩個電話 就體現了singleInstance的特點
singleInstance除了管理Activity介面,不混亂,不多次進棧,等等。
還有另外一個原因:(singleInstance會開闢一個新的任務棧,來存放Activity的引用,可以提高效能,正好通話介面非常注重效能,因為通話介面 是去啟動硬體貓打電話系列操作)