幾張圖讓你明白Android四大啟動模式

ClericYi發表於2020-02-21

幾張圖讓你明白Android四大啟動模式

前言

CVTE面試的時候答的最爛的一個題目了。廢話不多說,因為只要學過Android都應該知道四個啟動模式:standardsingleTopsingleTasksingleInstance

思維導圖

幾張圖讓你明白Android四大啟動模式

standard、singleTop、singleTask針對的任務棧都是當前對應的app程式的,而singleInstance指向整個系統。

standard — 標準模式

Activity的預設啟動方式。

standard圖示

  • 特徵:每次啟動一個Activity都會建立一個例項。
  • 應用場景:預設情況。

singleTop — 棧頂複用

singleTop圖示

  • 特徵:如果在棧頂,就不在建立例項。反之則建立。
  • 應用場景:當前要跳轉的頁面已經在棧頂時,比如說訊息通知跳轉

singleTask — 棧內複用

singleTask圖示

  • 特徵:如果棧記憶體在,就將後入棧的例項全部彈出
  • 應用場景:有一個專用主頁面作為基礎的app,這樣的app現在市面上也非常普遍存在,就比如一個Activity中嵌入ViewPager+BottomNavigationBar製作成的一個主頁面一樣,ViewPager中嵌入了很多的Fragment,這個時候如果是standardsingleTop的形式,很容易讓應用卡頓。

注意點:

  • 如果其他App程式開啟了Activity1,這個時候會建立新的任務棧

  • 如果以該啟動模式啟動的Activity1已經活動在後臺的一個任務棧中,那麼啟動後,後臺任務棧會一起切換到前臺。

singleInstance — 全域性唯一

跟前三種啟動模式不同,他並不要求例項在同一個任務棧

singleInstance圖示

  • 特徵:系統中只會有一個例項。
  • 應用場景:系統內部的應用,比如電話、簡訊等功能,通過Intent進行傳播時,固定的就會呼叫這些系統自帶的應用,在自己的應用中一般比較少使用。

以上就是我的學習成果,如果有什麼我沒有思考到的地方或是文章記憶體在錯誤,歡迎與我分享。


相關文章推薦:

聊一聊設計模式(一)-- 六大原則

JVM必備基礎知識(一) -- 類的載入機制

手撕AsyncTask

知道Handler,那你知道HandlerThread嗎?

相關文章