Activity 啟動(dòng)模式小結(jié)

啟動(dòng)模式分為4種,分別為

  1. Standrad
  2. SingleTop
  3. SingleTask
  4. SingleIntance

Standrad

就是默認(rèn)的模式,啟動(dòng)多少個(gè)就是多少個(gè)

SingleTop

SingleTop 需要這樣理解,SingleOnTop,當(dāng)棧頂是我的時(shí)候,就不再創(chuàng)建新的實(shí)例。
例如,ABCD,啟動(dòng)D,還是ABCD。如果是ABDC,啟動(dòng)D,最后就變成ABDCD。

SingleTask

SingleOnTask的意思,我在這個(gè)任務(wù)棧是唯一的。需要注意的是,這貨啟動(dòng)是默認(rèn)自帶clearTop效果的,也就是會(huì)把在它之后的Activity都清楚掉。
例如,任務(wù)棧中有ABDC,啟動(dòng)D,將會(huì)變成ABD,C將會(huì)被自動(dòng)推出。

SingleIntance

這個(gè)可以看做是SingleTask加強(qiáng)版,使用這個(gè)屬性的Activity,將會(huì)被單獨(dú)放在一個(gè)任務(wù)棧中,然后這個(gè)Activity在進(jìn)程中都是唯一個(gè)的

一個(gè)栗子

A 屬于棧1,BC 屬于棧2,A 為standard 模式,BC都是為singleTask模式。啟動(dòng)方式為這樣 A->B->C->A->B。這樣啟動(dòng)的時(shí)候,用戶按下返回鍵就是桌面了。問(wèn)題主要是在最后啟動(dòng)的B上,singleTask 自帶clearTop 屬性,將會(huì)把CA清除出去,A 和 B 又不是在相同的任務(wù)棧上,所以就回到桌面了。

啟動(dòng)Activity的一些常用的FLAG

FLAG_ACTIVITY_NEW_TASK

其實(shí)就是SingleTask 模式

FLAG_ACTIVITY_SINGLE_TOP

就是singletop

FLAG_ACTIVITY_CLEAR_TOP

清除在他最子上的活動(dòng),配合NEW_TASK使用

FLAG_ACTIVITY_EXECULE_FROM_RECENTS

不出現(xiàn)在最近應(yīng)用列表中

小坑

singleTop的Activity,用startActivityForResult 啟動(dòng)的時(shí)候是立刻返回值的,但是是錯(cuò)誤的result

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容