1. 程式人生 > >Android-Activity啟動模式-應用場景

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的引用,可以提高效能,正好通話介面非常注重效能,因為通話介面 是去啟動硬體貓打電話系列操作)