Activity的launchMode和任务栈小结
對Activity的launchMode的理解一直沒有好好總結下,這兩天系統總結下launchMode的使用方法:
Activity的launchMode屬性決定了Activity和應用程序當前任務棧之間的關系。一個應用程序當前任務棧管理著應用程序的activity集合的Activity歸屬和Activity間的交互。
開發者想要開發的App擁有良好的交互,因此,深入對Activity的launchMode的理解能幫助我們開發性能良好和交互合理的App。
Activity的launchMode主要有四種類型:
- standard
- singleTop
- singleTask
- singleInstance
我們知道Activity的四種啟動模式都是在配置文件manifest里配置,除此之外我們還能夠通過制定Intent的flag參數來改變Activity的默認行為。也就是說,我們的Activity的默認四種類型的表現形式。在我們啟動該Activity前,我們指定Intent的flag參數,我們能夠覆蓋Activity的默認表現。Intent的改變默認啟動模式的常見參數有例如以下:
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_CLEAR_TOP
- FLAG_ACTIVITY_SINGLE_TOP
以下從Activity的launchMode表現的四種啟動方式說起:
1.standard
standard模式是默認的啟動模式。不用為Activity配置android:launchMode屬性就可以。也能夠顯示指定為standard。
啟動standard模式的Activity時候,會在任務棧的棧頂加入一個新的實例化的Activity。
點擊返回鍵,Activity的退棧順序就依照任務棧先進先出的結構退棧。
2.singleTop
啟動singleTop模式的Activity時候,系統會查找當前任務棧棧頂元素是不是當前要啟動的Activity實例的類,假設不是,會實例化一個新的類加入到棧頂;假設是,當前棧頂Activity會被復用。
點擊返回鍵,Activity的退棧順序就依照任務棧先進先出的結構退棧。
3.singleTop
啟動singleTask模式的Activity時候,Activity會默認開啟一個新的任務棧。該Activity作為根元素。假設該Activity的實例已經存在單獨的任務棧,系統會調用該Activity的onNewIntent()方法,保證該Activity僅僅會存在一個實例。關于singleTask的元素退棧分兩種情況:
-啟動的Activity屬于本應用程序Activity集合
首先定義Activity啟動規則例如以下圖所看到的。
當啟動順序為A->C->A->C,返回棧退棧操作為C->A->home界面,通過實際的樣例能夠說明,當一個任務棧里存在singleTask類型的實例。再啟動該singleTask類型的Activity時候。在任務棧里該Activity實例上面的Activity都會清出任務棧,該Activity變成任務棧頂元素。
-啟動的Activity不屬于本應用程序應用程序集合
當啟動的singleTask為另外的應用程序的Activity,假設當前后臺沒有任務棧存在該Activity的情況。就新建一個任務棧。該Activity為該任務棧的棧頂元素。一種特殊的情況。當后臺剛好有一個任務棧存在改Activity的時候。此處該任務棧會被調到前臺。
假設此時按返回鍵的時候,回退的過程會是例如以下:
4.singleInstance
啟動singleInstance與singleTask類似,僅僅是系統不會向聲明為singleInstance的任務棧加入其它的activity,通過該聲明為singleInstance的Activity實例啟動其它的Activity。其它Activity必須加入到其它的任務棧。也就是說聲明額外singleInstance的Activity所在任務棧僅僅有它一個元素。
以下說下關于Intent的經常使用flags系統常量:
FLAG_ACTIVITY_NEW_TASK
該常量的實際效果跟上面提到的singleTask的啟動的Activity不屬于本應用程序的Activity集合效果一樣。
FLAG_ACTIVITY_SINGLE_TOP
該常量實際效果跟singleTop效果一樣。
FLAG_ACTIVITY_CLEAR_TOP
該常量相當于上面提到的singleTask的啟動的Activity屬于本應用程序的Activity集合效果一樣。
本文個人周末動手實踐小結。可能會有理解偏差錯誤的地方,歡迎大家指正,一起共同進步。
轉載請注明出處:http://blog.csdn.net/johnnyz1234/article/details/47209957
轉載于:https://www.cnblogs.com/jzssuanfa/p/7064224.html
總結
以上是生活随笔為你收集整理的Activity的launchMode和任务栈小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 打开和关闭显示器
- 下一篇: pt-find使用