安卓開發之Activity的4種啟動模式
一、四種啟動模式
Activity的啟動模式有4種,分別為standard、singleTop、singleTask、singleIntance。4種啟動模式的區別主要與Activity的任務棧管理有關,棧是一種後進先出的集合。
二、Activity啟動模式的設定
在AndroidManifest.xml中 ,註冊Activity時可以設定Activity啟動模式, android:launchMode=”” ,這個屬性用於配置Activity的啟動模式,屬性預設啟動模式為standard。
示例
<activity android:name=".MainActivity" android:launchMode="standard" />
三、各個啟動模式的區別
standard
這是Activity的標準啟動模式,也是Activity的預設啟動模式。在這種啟動模式下的Activity可以被多次例項化,即在同一個任務棧中可以存在多個該Activity的例項。如果ActivityA的啟動模式為standard,且已經有一個ActivityA例項被啟動,在ActivityA中呼叫startActivity時會啟動一個新的Activity例項,對系統效能的消耗過大。
singleTop
如果在任務棧的棧頂正好存在該Activity的例項, 就會重用位於棧頂的該例項,不會建立新的Activity物件,並且不會再呼叫通常情況下我們處理請求資料的onCreate方法,而是呼叫該例項的onNewIntent()函式將Intent物件傳遞到這個例項中,否則就會建立新的例項並放入棧頂(即使棧中已經存在該Activity例項,只要不在棧頂,都會建立例項)。
singleTask
在同一個Task內只能有一個Activity例項:
如果啟動的目標Activity不存在Task任務棧中,系統將會建立一個目標Activity例項,並將它加入到Task棧頂
如果啟動的目標Activity已存在Task任務棧的棧頂,就會重用位於棧頂的該例項,並且不會再呼叫通常情況下我們處理請求資料的onCreate方法,而會呼叫該例項的onNewIntent()函式將Intent物件傳遞到這個例項中。(同singleTop)
若果啟動的目標Activity已存在但沒有位於Task任務棧的棧頂,系統將會把任務棧中該目標Activity上面的所有Activity移除Task棧,使該Activity置於Task棧頂。
singleInstance
設定了singleInstance模式的Activity會在一個獨立的任務中開啟,並且在這個任務中有且只有這一個例項。當再次啟動該Activity例項時,會重用已存在的任務和例項,並且會呼叫該例項的onNewIntent()函式來接收Intent。類似瀏覽器工作原理,不管多少應用要啟動該Activity,這個Activity有且只有一個。
總結:
standard:標準模式,系統的預設模式
singleTop:棧頂複用模式,Activity如果在棧頂就不會被重新建立
singleTask:棧內複用模式,Activity如果在某個棧中存在就不會被重新建立
singleInstance:單例項模式,是加強版的singleTask,當例項建立後,系統會建一個新的任務棧(獨立存在)
相關文章
- activity四種啟動模式模式
- activity的啟動模式模式
- Activity啟動模式模式
- Android中的Activity四種啟動模式(launchMode)Android模式
- Activity的啟動模式詳解模式
- Android-Activity的啟動模式Android模式
- Android開發藝術(1)——Activity的生命週期和啟動模式Android模式
- Activity啟動模式(GIF 動態演示)模式
- Android開發之浮動ActivityAndroid
- Activity的生命週期和啟動模式模式
- Android面試官裝逼失敗之:Activity的啟動模式Android面試模式
- Android的activity的四種啟動方式Android
- Activity生命週期與啟動模式模式
- Android Activity啟動模式全面解析Android模式
- App 啟動過程(含 Activity 啟動過程) | 安卓 offer 收割基APP安卓
- Android中Activity的四種啟動方式Android
- 組內技術分享-Activity 的啟動模式模式
- Android Activity 啟動模式的功能驗證Android模式
- android 團隊開發技巧1 - activity 啟動Android
- 擼擼Android的羊毛(一)----Activity啟動模式Android模式
- Android學習筆記-Activity的啟動模式Android筆記模式
- Activity的生命週期和啟動模式詳解模式
- 一篇文章搞懂 Activity 啟動模式模式
- ActivityRecord、TaskRecord、ActivityStack以及Activity啟動模式詳解模式
- Activity生命週期與啟動模式筆記模式筆記
- [Android]Android Activity 啟動模式詳解Android模式
- Activity的啟動模式及IntentFilter匹配規則總結模式IntentFilter
- Android Activity的四大啟動模式詳解Android模式
- 安卓開發日記4安卓
- Activity 的啟動模式 以及與AppManager類的關係模式APP
- 完全理解android Activity啟動模式LauchMode (深入Activity與任務棧)Android模式
- 應用被其他app開啟時,不同啟動模式下activity任務棧的變化APP模式
- 安卓學習筆記之Activity(一)安卓筆記
- Android中Activity的啟動模式(LaunchMode)和使用場景Android模式
- Android Activity的生命週期和啟動模式詳解Android模式
- android Activity的啟動模式 作用簡析+demo詳解Android模式
- 啟動另外的一個應用程式的Activity(三種方式)
- 安卓開發之樣式和主題的使用與夜間/白天模式的動態轉換安卓模式