在Android开发中,android:excludeFromRecents 属性,通常在AndroidManifest.xml文件添加在<activity>标签中,用于指示系统是否应该将该Activity排除在最近任务列表之外。
属性值:
- true:该 Activity 将不会出现在“最近任务”列表中。
- false(默认值):该 Activity 会出现在“最近任务”列表中。
设置为true时,将无法从最近任务列表中看到或选择该Activity的实例。通常用于那些不需要或不应该被重新激活的临时或辅助Activity。要注意属于同个taskAffinity的Activity都不会出现。
在AndroidManifest.xml中设置此属性的示例如下:
<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>
使用场景:
- 「临时或辅助屏幕」:一些临时或辅助屏幕,通常不需要再次访问,可以将这些屏幕对应的Activity设置为"true"。
- 「登录或一次性流程」:例如,在登录流程中,可能不需要重新访问登录屏幕,可以将登录Activity设置为"true"。
- 「保护用户隐私」:对于某些包含敏感信息的Activity,可能不希望在“最近任务”列表中可见,以防止其他用户或应用程序窥探到这些信息。
需要注意到的地方:
- 将Activity设置为"true",Activity仍然会在其生命周期内正常运行,并且可以通过其他方式(如Intent)被启动。
- android:excludeFromRecents属性并不是仅仅影响被设置的Activity。由此该Activity启动的后续同属一个Task的一系列Activity都不会出现在最近任务列表中。也就是说该属性会对Task起作用的,而不仅仅是针对某个Activity。
- 如果要后续的Activity能够出现在最近任务列表中,就需要让后续Activity在新的Task中。
- 想要属性生效设置该属性的Activity必须是Task的根Activity。如果在某个Task非根Activity中设置 android:excludeFromRecents是没有任何效果的。
- 如果设置属性的Activity正是当前正在使用的,切换到最近任务列表也是可以看到的。但是退到后台运行后,比如按下Home键,属性就会发生作用。