前言
CVTE面試的時候答的最爛的一個題目了。廢話不多說,因為只要學過Android都應該知道四個啟動模式:standard
、singleTop
、singleTask
、singleInstance
。
思維導圖
standard、singleTop、singleTask針對的任務棧都是當前對應的app程式的,而singleInstance指向整個系統。
standard — 標準模式
Activity的預設啟動方式。
- 特徵:每次啟動一個Activity都會建立一個例項。
- 應用場景:預設情況。
singleTop — 棧頂複用
- 特徵:如果在棧頂,就不在建立例項。反之則建立。
- 應用場景:當前要跳轉的頁面已經在棧頂時,比如說訊息通知跳轉
singleTask — 棧內複用
- 特徵:如果棧記憶體在,就將後入棧的例項全部彈出。
- 應用場景:有一個專用主頁面作為基礎的app,這樣的app現在市面上也非常普遍存在,就比如一個
Activity
中嵌入ViewPager
+BottomNavigationBar
製作成的一個主頁面一樣,ViewPager
中嵌入了很多的Fragment
,這個時候如果是standard
或singleTop
的形式,很容易讓應用卡頓。
注意點:
如果其他App程式開啟了Activity1,這個時候會建立新的任務棧
如果以該啟動模式啟動的Activity1已經活動在後臺的一個任務棧中,那麼啟動後,後臺任務棧會一起切換到前臺。
singleInstance — 全域性唯一
跟前三種啟動模式不同,他並不要求例項在同一個任務棧
- 特徵:系統中只會有一個例項。
- 應用場景:系統內部的應用,比如電話、簡訊等功能,通過
Intent
進行傳播時,固定的就會呼叫這些系統自帶的應用,在自己的應用中一般比較少使用。
以上就是我的學習成果,如果有什麼我沒有思考到的地方或是文章記憶體在錯誤,歡迎與我分享。
相關文章推薦: