Android中四种启动模式,最容易理解的小白教程
說起Android中的啟動模式,其實是個很基礎(chǔ)的內(nèi)容,誰都知道是4中啟動模式,沒錯分別是以下四種:
1,standard
2,singleTop
3,singleTask
4,singleInstance
關(guān)于高深的純理論說明這里就不多做贅述,畢竟文字說明太饒人,這里就準備說點簡單的,能看得見的,現(xiàn)在開始吧。
第一種:standard(默認)
關(guān)于這種模式,大家都知道,就是Android默認的啟動模式,就是不顯示指定,就是這種模式。現(xiàn)在有FirstActivity和SecondActivity兩個界面,代碼里都打印了當前實例和taskId,格式為xx/xx
測試情景:重復跳轉(zhuǎn)自己(自己設(shè)置standard)
794為task的Id,前面的為當前實例對象,可見每次都是新建的,并不是復用的。@f37d177是第一個頁面,一共跳轉(zhuǎn)了三次。同樣退出應(yīng)用也用了三次。
結(jié)論:standard模式下,會不斷地新建activity實例,都放入同一個task中
第二種:singleTop
測試情景一:重復跳轉(zhuǎn)自己(自己設(shè)置singleTop)
看起來好像沒有點擊一樣,其實是點擊了的,注意看Actionbar上的點擊計數(shù),點擊了3次,三次的實例和taskId都是沒有變化的,且最后退出應(yīng)用就用了一次點擊,如下圖:
測試情景二:循環(huán)跳轉(zhuǎn)到目標頁面(SecondActivity設(shè)置singleTop)
可以看到兩次跳轉(zhuǎn)到SecondActivity時,實例都不一樣,且最后返回到桌面也是和進入的次數(shù)一樣多。這里進入了兩次SecondActivity,且最終從SecondActivity退出應(yīng)用,一共用了4次,如下圖
結(jié)論:顧名思義,singleTop,如果當前實例在當前的task的棧頂,則直接復用,測試情景一;如果當前實例不再棧頂,則新建實例,如測試情景二,因為每次都是從FirstActivity跳轉(zhuǎn)到SecondActivity的,雖然第二次跳轉(zhuǎn)到SecondActivity的時候已經(jīng)存在了SecondActivity實例,可是因為不在棧頂,所以又新建了一個SecondActivity實例。
第三種:singleTask
測試情景一:重復跳轉(zhuǎn)自己(自己設(shè)置singleTask)
跳轉(zhuǎn)了自己4次,可以看到實例和taskId都是沒有變化,且最后一次就能退出應(yīng)用,如下圖:
測試情景二:循環(huán)跳轉(zhuǎn)到目標頁面(SecondActivity設(shè)置singleTask)
這里我們注意到一開始FirstActivity的實例為a2c5349,然后跳轉(zhuǎn)到SecondActivity一直都是5d5dd2a,而且taskId兩個界面也是一致的,最后在SecondActivity按了一次返回鍵,這里直接返回到了最初的5349實例界面,也就是第一個界面,如下圖:
結(jié)論:設(shè)置了singleTask的頁面,只要是task中有這個實例,就會一直復用,而且每次復用這個已存在的實例,都會清空上面的其他實例(這里的FirstActivity),將自己直接提升到棧頂位置,也就是顯示自己
第四種:singleInstance
測試情景一:重復跳轉(zhuǎn)自己(自己設(shè)置singleInstance)
跳轉(zhuǎn)了5次,但是可以發(fā)現(xiàn)實例和task的值都沒有變化,退出應(yīng)用也只是一次退出,如下圖:
測試情景二:循環(huán)跳轉(zhuǎn)到目標頁面(SecondActivity設(shè)置singleInstance)
可以看到一開始從FirstActivity跳轉(zhuǎn)跳轉(zhuǎn)到SecondActivity的時候,taskId發(fā)生了變化,FirstActivity的id是863,但是跳轉(zhuǎn)到SecondActivity的時候變成了864,然后后面每次跳轉(zhuǎn)到SecondActivity的時候?qū)嵗蛅ask的id都是沒有變化;說說返回的場景
如果最后從FirstActivity返回,那么會把之前壓入棧的FirstActivity全部返回完之后才是SecondActivity頁面,然后一次就能退出應(yīng)用;
如果最后從SecondActivity頁面返回,那么一次就回到FirstActivity,然后把之前壓入棧的FirstActivity全部返回完就退出了應(yīng)用;
壓入棧的如下圖所示:
結(jié)論:設(shè)置了singleInstance的頁面,初始時都是新建一個task棧給這個頁面,然后后面一直復用這個棧內(nèi)的頁面。注意,只有這種模式會新建一個棧給初始化的頁面。最后返回的規(guī)律是,先把本頁面所在的棧頭出完,然后再出下一個棧的每個頁面。
至此,四種模式簡單分析完畢,希望能給大家一個直觀的理解
上一篇:IDEA或者AS 中關(guān)于Git的常用操作
轉(zhuǎn)載于:https://juejin.im/post/5b9a2c8fe51d450e5766da88
總結(jié)
以上是生活随笔為你收集整理的Android中四种启动模式,最容易理解的小白教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hopfield神经网络和TSP问题
- 下一篇: 耕牛传媒关于诈骗,拖延工期等负面信息特别