日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Activity的launchMode和任务栈小结

發(fā)布時(shí)間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Activity的launchMode和任务栈小结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)Activity的launchMode的理解一直沒(méi)有好好總結(jié)下,這兩天系統(tǒng)總結(jié)下launchMode的使用方法:

Activity的launchMode屬性決定了Activity和應(yīng)用程序當(dāng)前任務(wù)棧之間的關(guān)系。一個(gè)應(yīng)用程序當(dāng)前任務(wù)棧管理著應(yīng)用程序的activity集合的Activity歸屬和Activity間的交互。

開(kāi)發(fā)者想要開(kāi)發(fā)的App擁有良好的交互,因此,深入對(duì)Activity的launchMode的理解能幫助我們開(kāi)發(fā)性能良好和交互合理的App。

Activity的launchMode主要有四種類型:

  • standard
  • singleTop
  • singleTask
  • singleInstance

我們知道Activity的四種啟動(dòng)模式都是在配置文件manifest里配置,除此之外我們還能夠通過(guò)制定Intent的flag參數(shù)來(lái)改變Activity的默認(rèn)行為。也就是說(shuō),我們的Activity的默認(rèn)四種類型的表現(xiàn)形式。在我們啟動(dòng)該Activity前,我們指定Intent的flag參數(shù),我們能夠覆蓋Activity的默認(rèn)表現(xiàn)。Intent的改變默認(rèn)啟動(dòng)模式的常見(jiàn)參數(shù)有例如以下:

  • FLAG_ACTIVITY_NEW_TASK
  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_SINGLE_TOP

以下從Activity的launchMode表現(xiàn)的四種啟動(dòng)方式說(shuō)起:
1.standard
standard模式是默認(rèn)的啟動(dòng)模式。不用為Activity配置android:launchMode屬性就可以。也能夠顯示指定為standard。

啟動(dòng)standard模式的Activity時(shí)候,會(huì)在任務(wù)棧的棧頂加入一個(gè)新的實(shí)例化的Activity。

點(diǎn)擊返回鍵,Activity的退棧順序就依照任務(wù)棧先進(jìn)先出的結(jié)構(gòu)退棧。

2.singleTop
啟動(dòng)singleTop模式的Activity時(shí)候,系統(tǒng)會(huì)查找當(dāng)前任務(wù)棧棧頂元素是不是當(dāng)前要啟動(dòng)的Activity實(shí)例的類,假設(shè)不是,會(huì)實(shí)例化一個(gè)新的類加入到棧頂;假設(shè)是,當(dāng)前棧頂Activity會(huì)被復(fù)用。

點(diǎn)擊返回鍵,Activity的退棧順序就依照任務(wù)棧先進(jìn)先出的結(jié)構(gòu)退棧。

3.singleTop
啟動(dòng)singleTask模式的Activity時(shí)候,Activity會(huì)默認(rèn)開(kāi)啟一個(gè)新的任務(wù)棧。該Activity作為根元素。假設(shè)該Activity的實(shí)例已經(jīng)存在單獨(dú)的任務(wù)棧,系統(tǒng)會(huì)調(diào)用該Activity的onNewIntent()方法,保證該Activity僅僅會(huì)存在一個(gè)實(shí)例。關(guān)于singleTask的元素退棧分兩種情況:
-啟動(dòng)的Activity屬于本應(yīng)用程序Activity集合
首先定義Activity啟動(dòng)規(guī)則例如以下圖所看到的。

當(dāng)啟動(dòng)順序?yàn)锳->C->A->C,返回棧退棧操作為C->A->home界面,通過(guò)實(shí)際的樣例能夠說(shuō)明,當(dāng)一個(gè)任務(wù)棧里存在singleTask類型的實(shí)例。再啟動(dòng)該singleTask類型的Activity時(shí)候。在任務(wù)棧里該Activity實(shí)例上面的Activity都會(huì)清出任務(wù)棧,該Activity變成任務(wù)棧頂元素。

-啟動(dòng)的Activity不屬于本應(yīng)用程序應(yīng)用程序集合
當(dāng)啟動(dòng)的singleTask為另外的應(yīng)用程序的Activity,假設(shè)當(dāng)前后臺(tái)沒(méi)有任務(wù)棧存在該Activity的情況。就新建一個(gè)任務(wù)棧。該Activity為該任務(wù)棧的棧頂元素。一種特殊的情況。當(dāng)后臺(tái)剛好有一個(gè)任務(wù)棧存在改Activity的時(shí)候。此處該任務(wù)棧會(huì)被調(diào)到前臺(tái)。

假設(shè)此時(shí)按返回鍵的時(shí)候,回退的過(guò)程會(huì)是例如以下:

4.singleInstance
啟動(dòng)singleInstance與singleTask類似,僅僅是系統(tǒng)不會(huì)向聲明為singleInstance的任務(wù)棧加入其它的activity,通過(guò)該聲明為singleInstance的Activity實(shí)例啟動(dòng)其它的Activity。其它Activity必須加入到其它的任務(wù)棧。也就是說(shuō)聲明額外singleInstance的Activity所在任務(wù)棧僅僅有它一個(gè)元素。

以下說(shuō)下關(guān)于Intent的經(jīng)常使用flags系統(tǒng)常量:
FLAG_ACTIVITY_NEW_TASK
該常量的實(shí)際效果跟上面提到的singleTask的啟動(dòng)的Activity不屬于本應(yīng)用程序的Activity集合效果一樣。


FLAG_ACTIVITY_SINGLE_TOP
該常量實(shí)際效果跟singleTop效果一樣。


FLAG_ACTIVITY_CLEAR_TOP
該常量相當(dāng)于上面提到的singleTask的啟動(dòng)的Activity屬于本應(yīng)用程序的Activity集合效果一樣。

本文個(gè)人周末動(dòng)手實(shí)踐小結(jié)。可能會(huì)有理解偏差錯(cuò)誤的地方,歡迎大家指正,一起共同進(jìn)步。

轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/johnnyz1234/article/details/47209957

轉(zhuǎn)載于:https://www.cnblogs.com/jzssuanfa/p/7064224.html

總結(jié)

以上是生活随笔為你收集整理的Activity的launchMode和任务栈小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。