Android:excludeFromRecents屬性使用分析
在Android開發(fā)中,android:excludeFromRecents 屬性,通常在AndroidManifest.xml文件添加在<activity>標(biāo)簽中,用于指示系統(tǒng)是否應(yīng)該將該Activity排除在最近任務(wù)列表之外。
屬性值:
- true:該 Activity 將不會(huì)出現(xiàn)在“最近任務(wù)”列表中。
- false(默認(rèn)值):該 Activity 會(huì)出現(xiàn)在“最近任務(wù)”列表中。
設(shè)置為true時(shí),將無法從最近任務(wù)列表中看到或選擇該Activity的實(shí)例。通常用于那些不需要或不應(yīng)該被重新激活的臨時(shí)或輔助Activity。要注意屬于同個(gè)taskAffinity的Activity都不會(huì)出現(xiàn)。
在AndroidManifest.xml中設(shè)置此屬性的示例如下:
<activity
android:name=".MainActivity"
android:exported="true"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
使用場景:
- 「臨時(shí)或輔助屏幕」:一些臨時(shí)或輔助屏幕,通常不需要再次訪問,可以將這些屏幕對(duì)應(yīng)的Activity設(shè)置為"true"。
- 「登錄或一次性流程」:例如,在登錄流程中,可能不需要重新訪問登錄屏幕,可以將登錄Activity設(shè)置為"true"。
- 「保護(hù)用戶隱私」:對(duì)于某些包含敏感信息的Activity,可能不希望在“最近任務(wù)”列表中可見,以防止其他用戶或應(yīng)用程序窺探到這些信息。
需要注意到的地方:
- 將Activity設(shè)置為"true",Activity仍然會(huì)在其生命周期內(nèi)正常運(yùn)行,并且可以通過其他方式(如Intent)被啟動(dòng)。
- android:excludeFromRecents屬性并不是僅僅影響被設(shè)置的Activity。由此該Activity啟動(dòng)的后續(xù)同屬一個(gè)Task的一系列Activity都不會(huì)出現(xiàn)在最近任務(wù)列表中。也就是說該屬性會(huì)對(duì)Task起作用的,而不僅僅是針對(duì)某個(gè)Activity。
- 如果要后續(xù)的Activity能夠出現(xiàn)在最近任務(wù)列表中,就需要讓后續(xù)Activity在新的Task中。
- 想要屬性生效設(shè)置該屬性的Activity必須是Task的根Activity。如果在某個(gè)Task非根Activity中設(shè)置 android:excludeFromRecents是沒有任何效果的。
- 如果設(shè)置屬性的Activity正是當(dāng)前正在使用的,切換到最近任務(wù)列表也是可以看到的。但是退到后臺(tái)運(yùn)行后,比如按下Home鍵,屬性就會(huì)發(fā)生作用。