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

 

Android操作系統的應用Phone-->通話界面的啟動模式為什么不用標准模式standard

答:1.會非常混亂,例如:多個人打電話過來接聽,或者在 操作系統的聯系人應用中可以看到,在撥打電話的應用也可以看到,任務棧會被進棧多次,管理非常混亂。

  2.standard不會開辟新的任務棧,效率不高,通話界面需要去啟動硬件的貓..,很耗時。

 

Android操作系統的應用Phone-->通話界面的啟動模式為什么不用獨占頂端模式singleTop ?

答:1.無法保證通話界面Activity在頂端,所以會非常混亂,例如:多個人打電話過來接聽,或者在 其他應用打開,在撥打電話的應用也可以看到,任務棧會被進棧多次,管理非常混亂。

  2.singleTop不會開辟新的任務棧,效率不高,通話界面需要去啟動硬件的貓..,很耗時。

 

Android操作系統的應用Phone-->通話界面的啟動模式為什么不用單任務模式singleTask ?

答:1.singleTask單任務模式,會從底端往上找,一旦找到就直接殺到頂端,這是不合理的,不能殺死其他在singleTask之上的Activity。

  2.singleTask不會開辟新的任務棧,效率不高,通話界面需要去啟動硬件的貓..,很耗時。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM