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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android singleinstance home,Android启动模式之singleinstance的坑

發(fā)布時(shí)間:2024/1/23 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android singleinstance home,Android启动模式之singleinstance的坑 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

在實(shí)際應(yīng)用中,使用singleinstance啟動(dòng)模式時(shí),會(huì)遇到一些奇奇怪怪的問(wèn)題。Android有四種啟動(dòng)模式,分別是standard,singleTop,singleTask,singleInstance。下面分別簡(jiǎn)單的介紹下這四種啟動(dòng)模式的作用。

standard

Android 默認(rèn)的一種啟動(dòng)模式。不需要為activity設(shè)置launchMode。這種啟動(dòng)模式簡(jiǎn)單的來(lái)說(shuō)就是當(dāng)你startActivity的時(shí)候,他就創(chuàng)建一個(gè)。

singleTop

這種模式模式從字面意思就能看得出來(lái),就是當(dāng)前的activity處于棧頂?shù)臅r(shí)候,當(dāng)你startActivity當(dāng)前的activity的時(shí)候,它不會(huì)創(chuàng)建新的activity,而是會(huì)復(fù)用之前的activity。舉個(gè)例子,startActivity了一個(gè)ActivityA,ActivityA又startActivity了ActivityB,當(dāng)在ActivityB再次startActivity一個(gè)ActivityB的時(shí)候,它不會(huì)創(chuàng)建一個(gè)新的ActivityB,而是復(fù)用之前的ActivityB。

這里需要注意的是,只有當(dāng)前的activity處于棧頂?shù)臅r(shí)候才管用。舉個(gè)例子:startActivity了一個(gè)ActivityA,ActivityA又startActivity了ActivityB,ActivityB又startActivity了ActivityA,那么ActivityA還是會(huì)重新創(chuàng)建,而不是復(fù)用之前的ActivityA。

singleTask

單一任務(wù)。意思就是說(shuō)當(dāng)前的activity只有一個(gè)實(shí)例,無(wú)論在任何地方startActivity出來(lái)這個(gè)activity,它都只存在一個(gè)實(shí)例。并且,它會(huì)將在他之上的所有activity都銷(xiāo)毀。通常這個(gè)activity都是用來(lái)作為MainActivity。因?yàn)橹黜?yè)只需要存在一個(gè),然后回到主頁(yè)的時(shí)候可以將所有的activity都銷(xiāo)毀起到退出應(yīng)用的作用。舉個(gè)例子,startActivity了一個(gè)ActivityA,ActivityA的啟動(dòng)模式為singleTask,那么在ActivityA里startActivity了一個(gè)ActivityB,在ActivityB里startActivity了一個(gè)ActivityC。此時(shí)在當(dāng)前的任務(wù)棧中的順序是,ActivityA->ActivityB->ActivityC。然后在ActivityC里重新startActivity了一個(gè)ActivityA,此時(shí)ActivityA會(huì)將存在于它之上的所有activity都銷(xiāo)毀。所以此時(shí)任務(wù)棧中就只剩下ActivityC了。

singleInstance

這個(gè)模式才是重點(diǎn),也是比較容易入坑的一種啟動(dòng)模式。字面上理解為單一實(shí)例。它具備所有singleTask的特點(diǎn),唯一不同的是,它是存在于另一個(gè)任務(wù)棧中。上面的三種模式都存在于同一個(gè)任務(wù)棧中,而這種模式則是存在于另一個(gè)任務(wù)棧中。舉個(gè)例子,上面的啟動(dòng)模式都存在于地球上,而這種模式存在于火星上。整個(gè)Android系統(tǒng)就是個(gè)宇宙。下面來(lái)詳細(xì)介紹一下singleInstance的坑。

singleInstance之一坑

此時(shí)有三個(gè)activity,ActivityA,ActivityB,ActivityC,除了ActivityB的啟動(dòng)模式為singleInstance,其他的啟動(dòng)模式都為默認(rèn)的。startActivity了一個(gè)ActivityA,在ActivityA里startActivity了一個(gè)ActivityB,在ActivityB里startActivity了一個(gè)ActivityC。此時(shí)在當(dāng)前的任務(wù)棧中的順序是,ActivityA->ActivityB->ActivityC。照理來(lái)說(shuō)在當(dāng)前ActivityC頁(yè)面按返回鍵,finish當(dāng)前界面后應(yīng)當(dāng)回到ActivityB界面。但是事與愿違,奇跡出現(xiàn)了,頁(yè)面直接回到了ActivityA。這是為什么呢?其實(shí)想想就能明白了,上面已經(jīng)說(shuō)過(guò),singleInstance模式是存在于另一個(gè)任務(wù)棧中的。也就是說(shuō)ActivityA和ActivityC是處于同一個(gè)任務(wù)棧中的,ActivityB則是存在另個(gè)棧中。所以當(dāng)關(guān)閉了ActivityC的時(shí)候,它自然就會(huì)去找當(dāng)前任務(wù)棧存在的activity。當(dāng)前的activity都關(guān)閉了之后,才會(huì)去找另一個(gè)任務(wù)棧中的activity。也就是說(shuō)當(dāng)在ActivityC中finish之后,會(huì)回到ActivityA的界面,在ActivityA里finish之后會(huì)回到ActivityB界面。如果還想回到ActivityB的頁(yè)面怎么辦呢?我的做法是,在ActivityB定義一個(gè)全局變量,public static boolean returnActivityB;界面需要跳轉(zhuǎn)的時(shí)候?qū)eturnActivityB=true;然后在ActivityA界面onstart方法里判斷returnActivityB是否為true,是的話(huà)就跳轉(zhuǎn)到ActivityB,同時(shí)將returnActivityB=false;這樣就能解決跳轉(zhuǎn)的問(wèn)題了。不過(guò)感覺(jué)還不是很好,如果有更好的方法,歡迎大家給我留言告訴我一聲。

singleInstance之二坑

此時(shí)有兩個(gè)個(gè)activity,ActivityA,ActivityB,ActivityA的啟動(dòng)模式為默認(rèn)的,ActivityB的啟動(dòng)模式為singleInstance。當(dāng)在ActivityA里startActivity了ActivityB,當(dāng)前頁(yè)面為ActivityB。按下home鍵。應(yīng)用退到后臺(tái)。此時(shí)再點(diǎn)擊圖標(biāo)進(jìn)入APP,按照天理來(lái)說(shuō),此時(shí)的界面應(yīng)該是ActivityB,可是奇跡又出現(xiàn)了,當(dāng)前顯示的界面是ActivityA。這是因?yàn)楫?dāng)重新啟動(dòng)的時(shí)候,系統(tǒng)會(huì)先去找主棧(我是這么叫的)里的activity,也就是APP中LAUNCHER的activity所處在的棧。查看是否有存在的activity。沒(méi)有的話(huà)則會(huì)重新啟動(dòng)LAUNCHER。要解決這個(gè)方法則是和一坑的解決辦法一樣,在ActivityB定義一個(gè)全局變量,public static boolean returnActivityB;在oncreat方法將returnActivityB=true;然后在ActivityA界面onstart方法里判斷returnActivityB是否為true,是的話(huà)就跳轉(zhuǎn)到ActivityB,同時(shí)將returnActivityB=false;這樣就能解決跳轉(zhuǎn)的問(wèn)題了。

總結(jié)

Android的啟動(dòng)模式如果利用的好,還是可以解決很多問(wèn)題的。啟動(dòng)模式還是值得好好的研究一下的。歡迎各位指教出錯(cuò)誤,共同學(xué)習(xí)。

原文:https://www.cnblogs.com/Im-Victor/p/9656471.html

總結(jié)

以上是生活随笔為你收集整理的android singleinstance home,Android启动模式之singleinstance的坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 国产1区二区 | 久色影视| 免看黄大片aa | 欧美最顶级a∨艳星 | 波多野结衣小视频 | 欧美日韩国产麻豆 | 国产在成人精品线拍偷自揄拍 | 成人av资源在线 | 国产片淫乱18一级毛片动态图 | 国产精品探花在线观看 | 蜜桃视频久久一区免费观看入口 | 中文字幕岛国 | 黄色网址在线免费观看 | а中文在线天堂 | 日日躁夜夜躁aaaabbbb | 日韩黄色视屏 | 欧美乱码精品 | 99成人在线视频 | 日韩欧美一区视频 | 91黑人精品一区二区三区 | 欧美精品久久久久久久久老牛影院 | 神马午夜我不卡 | 在线一区二区三区视频 | 国产女主播在线观看 | 精品一区二区三区四区五区 | 成人福利网站在线观看 | 波多野结衣三级视频 | 麻豆国产免费 | 久久这里只有精品99 | 麻豆蜜桃在线观看 | 94av| www.av小说 | 成熟的女同志hd | 久久免费在线 | a免费观看 | 5级黄色片| 亚洲成av人片一区二区 | 午夜精品美女久久久久av福利 | 丁香综合网 | 日韩精品一区二区三 | 久久无码专区国产精品s | 久草网在线视频 | 日韩中文字幕2019 | 亚洲无圣光 | 象人高潮调教丨vk | 日本高清不卡在线观看 | 亚洲国产日韩欧美一区二区三区 | 四虎永久免费观看 | 加勒比色综合 | 精品成人免费一区二区在线播放 | 李宗瑞91在线正在播放 | 国产91欧美 | 国产高清视频在线免费观看 | 亚洲最色网站 | av特黄 | 一区二区三区四区在线 | 中文字幕第七页 | 激情深爱五月 | 成人精品视频99在线观看免费 | 国产色婷婷一区二区三区竹菊影视 | 午夜国产在线视频 | 久久久久久综合 | 性欧美在线观看 | 欧美xxxxx精品| 日韩中文字幕一区 | jizz在线观看视频 | 精品视频一区二区三区在线观看 | 国产成人在线观看免费 | 51精品国产| 麻豆精品一区二区三区 | 亚洲一级片免费 | 欧美日韩在线播放 | 久久亚洲AV成人无码一二三 | 黄色污网站在线观看 | 欧美日韩一区二区三区在线 | 18禁肉肉无遮挡无码网站 | 肉肉视频在线观看 | 少妇高潮一区二区三区99 | xxxxx在线观看 | 天天操天天透 | 欧美少妇视频 | 日本大尺度吃奶做爰视频 | 奇米777第四色 | 日本中文字幕观看 | 天天爽天天色 | 人人妻人人澡人人爽人人dvd | 国产伦精品一区二区三区视频女 | 一级美女黄色片 | 伊人影院综合在线 | 欧美黄色录像 | 三级黄色片网站 | 日韩性插| 91免费观看网站 | 丁香花电影高清在线阅读免费 | 8050午夜一级毛片久久亚洲欧 | 国内一区二区三区 | 免费看女人裸体 | 成人午夜一区二区 | 人妻洗澡被强公日日澡电影 |