Android应用运行时android:excludeFromRecents不生效,如何隐藏应用在最近任务?
问题解答
1. 该现象的成因
android:excludeFromRecents属性的作用规则是仅当应用的任务栈被移到后台时,才会从最近任务列表中移除条目。
你遇到的两种情况差异本质是任务栈状态不同:
- 情况1中你按返回键回到桌面,应用的任务栈被系统判定为移至后台,此时属性触发,最近任务列表不会展示对应条目
- 情况2中你直接触发最近任务界面时,应用的任务栈仍处于前台活跃状态,系统默认会展示当前活跃的前台任务,
excludeFromRecents不会对前台活跃任务生效,所以你能看到应用条目
2. 完全隐藏最近任务的实现方案
不需要杀死应用,有两种通用可行方案:
方案1:搭配android:noHistory属性(适用无多级页面回退需求的场景)
在应用主入口Activity的<activity/>标签中同时添加两个属性即可:
<activity android:name=".MainActivity" android:excludeFromRecents="true" android:noHistory="true"> <!-- 其余activity配置 --> </activity>
该配置下用户离开Activity后系统会自动将该Activity从任务栈中移除,触发excludeFromRecents规则,直接切最近任务也不会显示应用条目,应用后台进程可正常运行。
方案2:动态触发任务栈移至后台(适用需保留页面回退栈的场景)
如果应用不能加noHistory属性,可以重写Activity的系统回调,检测到应用进入最近任务预览状态时,主动调用方法将任务栈移至后台,触发隐藏规则,应用不会被杀死:
@Override public void onTrimMemory(int level) { super.onTrimMemory(level); // 检测到应用UI被隐藏时主动将任务栈移至后台 if (level == TRIM_MEMORY_UI_HIDDEN) { moveTaskToBack(true); } }
内容的提问来源于stack exchange,提问作者Linh Pham Ai
相关产品推荐
相关产品推荐

