Activity之launchMode:singleTop,singleTask与singleInstance
相關(guān)內(nèi)容,可以參見官方網(wǎng)址:
http://developer.android.com/guide/components/tasks-and-back-stack.html
如圖所示,如果ABC三個Activity的launchMode都是standard,那么按照圖示順序調(diào)用后,堆棧為ABCBB;
而如果界面ActivityB的launchMode為singleTop,同樣的調(diào)用關(guān)系下,堆棧為ABCB,棧頂?shù)腂,被復(fù)用了。
singleTop模式,適合于與用戶交互時保持信息更新的界面Activity,比如聯(lián)系人的搜索界面界面等;
singleTop僅作為棧頂Activity時才可能被復(fù)用,同一個Activity在系統(tǒng)中,還是會存在多個的現(xiàn)象。
而singleTask和singleInstance,在整個系統(tǒng)中,僅會有一個對象存在,以節(jié)省內(nèi)存開銷。
如果運(yùn)行模式不是默認(rèn)的standard模式,那么,該Activity需要重載onNewIntent的函數(shù)。
standard和singleTop,對它的調(diào)用,不會引起任務(wù)切換;而singleTask和singleInstance,則相反。
換句話說,singleTask和singleInstance,其Activity的對象,僅可作為任務(wù)的根Activity而存在,
而standard和singleTop,其Activity的對象,則可能存在Activity堆棧的任何位置。
如圖所示,當(dāng)B的運(yùn)行模式為singleTask和singleInstance時,所有對B的調(diào)用,
都會跳轉(zhuǎn)到以B為根的任務(wù)中進(jìn)行,而與調(diào)用Activity所在的任務(wù),毫無關(guān)聯(lián)。
singleTask和singleInstance唯一的區(qū)別是:
singleInstance,其所在的任務(wù)中,包含且只包含一個該Activity的對象,不會再有其他的Activity對象;
而singleTask,其任務(wù)中,則可能包含多個其他相關(guān)的Activity對象。
singleTask和singleInstance適用于消耗內(nèi)存較多的單實(shí)例界面,比如瀏覽器和音樂播放器等。
總結(jié)
以上是生活随笔為你收集整理的Activity之launchMode:singleTop,singleTask与singleInstance的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 之PackageMana
- 下一篇: Andorid之taskAffinity