android:excludeFromRecents
-
- 基础
- [从根上影响 Task](#从根上影响 Task)
- [excludeFromRecents 属性可能会影响系统](#excludeFromRecents 属性可能会影响系统)
基础
android:excludeFromRecents
是一种在Android应用程序清单文件(AndroidManifest.xml)中使用的属性,用于指定一个Activity是否应该在最近任务列表(Recents)中排除显示。将这个属性设置为"true"表示该Activity不会出现在最近任务列表中,而设置为"false"或省略该属性则允许Activity在最近任务列表中显示。
示例:
xml
<activity
android:name=".YourActivity"
android:excludeFromRecents="true">
<!-- Other activity attributes and configurations -->
</activity>
在上述示例中,YourActivity
将被排除在最近任务列表之外。此属性通常用于那些不希望用户通过最近任务列表导航到的特定Activity,例如一些临时性的或不需要频繁切换的Activity。
从根上影响 Task
excludeFromRecents 设置成 true 必须是在 task 的根 activity。
官方文档中对 excludeFromRecents 属性的说明如下:
是否应将该 Activity 启动的任务排除在最近使用的应用列表(即概览屏幕)之外。 也就是说,当该 Activity 是新任务的根 Activity 时,此属性确定任务是否应出现在最近使用的应用列表中。 如果应将任务排除在列表之外,请设置" true ";如果应将其包括在内,则设置" false "。 默认值为" false "。
从这段说明可以看出,excludeFromRecents 属性的作用是将该 Activity 启动的任务排除在最近使用的应用列表之外。而任务是指由同一个应用程序启动的一系列 Activity。因此,如果将 excludeFromRecents 属性设置为 true,则该 Activity 启动的所有后续 Activity 都将不会出现在最近使用的应用列表中。
如果在非根 Activity 中设置 excludeFromRecents 属性,则该属性不会起作用。这是因为非根 Activity 所属的任务已经存在,而 excludeFromRecents 属性只能影响新创建的任务。
从 Android 8.0(API 级别 26)开始,excludeFromRecents 属性还会影响该 activity 启动的后续 activity。也就是说,如果设置了 excludeFromRecents 属性,那么该 activity 启动的后续 activity 也会被排除在最近使用的应用列表之外。
因此,如果要将某个 Activity 排除在最近使用的应用列表之外,必须将该 Activity 设置为 task 的根 Activity。
excludeFromRecents 属性可能会影响系统
excludeFromRecents 属性可能会影响系统。
系统在内存不足时会根据以下几个因素来决定是否杀死某个应用:
- 应用的优先级
- 应用的活跃程度
- 应用的资源占用
其中,应用的优先级是最重要的因素。优先级越高的应用,越不容易被杀死。
excludeFromRecents 属性会影响应用的优先级。当 excludeFromRecents 属性设置为 true 时,应用的优先级会降低。因此,系统在内存不足时可能会优先杀死 excludeFromRecents=true 的应用。
具体来说,当 excludeFromRecents 属性设置为 true 时,应用的优先级会降低 1 级。因此,如果应用的默认优先级是 NORMAL,则设置 excludeFromRecents 属性后,应用的优先级会变为 BACKGROUND。
当然,系统是否会杀死 excludeFromRecents=true 的应用,还取决于其他因素,比如应用的活跃程度和资源占用。如果应用非常活跃,或者占用大量资源,则系统可能会保留该应用,即使其优先级较低。
总而言之,excludeFromRecents 属性可能会影响系统,但具体影响程度取决于其他因素。