Android 从最近的任务中排除当前活动

Android 从最近的任务中排除当前活动,android,android-activity,Android,Android Activity,我的应用程序在后台运行,有时会显示活动,故意中断用户的流量。“我的活动”启动一个新任务,该任务在前台时出现在“最近的任务”列表中。有什么办法可以预防吗?设置android:excludeFromRecents不起作用-只有在暂停后,“最近的任务”中才不再显示活动 清单看起来像: <activity android:name="com.example.recenttasks.MainActivity" android:excludeFromRecents="true">

我的应用程序在后台运行,有时会显示活动,故意中断用户的流量。“我的活动”启动一个新任务,该任务在前台时出现在“最近的任务”列表中。有什么办法可以预防吗?设置
android:excludeFromRecents
不起作用-只有在暂停后,“最近的任务”中才不再显示活动

清单看起来像:

<activity
    android:name="com.example.recenttasks.MainActivity"
    android:excludeFromRecents="true">
</activity>

你在清单中定义了它,这已经足够了,但它不会到来

确定..尝试将此标志也添加到您的
Intnet
,然后启动活动

intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

你提到的关键是

在前台时出现在“最近的任务”列表中

我认为你不能改变这种行为。我刚刚在我的应用程序上进行了测试,同样的事情也发生了。如果我在前台进行活动时按下“最近的任务”按钮,它会显示在那里。当我移动到其他活动或手机主屏幕时,该活动不再列出

我也在Android最新版本的内置DeskClock应用程序上进行了测试,当触发新的闹钟时,同样的行为也会出现。请注意,该应用程序的
AlarmAlertFullscreen
活动与您在问题中提到的参数相同

我不确定您是否可以绕过这一点,也不确定为什么您首先需要绕过它,因为一旦失去焦点,活动将不再列出。

用户是否可以返回到它?(这意味着如果它显示和用户最近的点击,他们是否失去了看到隐藏活动的机会,或者应该仍然存在?)

如果他们无论如何都无法返回到它,那么最好的操作是
finish()
活动
onPause()
。这意味着,只要您使用了
android:excludeFromRecents
android:noHistory=“true”
,recents中就不会有任何项目

<强>如果您确实希望返回< /强>到“中断”活动(但不希望有一个入口条目),您可以考虑仍然完成活动<代码> OnPosip——但也记录一个<代码>首选项标志(类似于代码> iSyelial)。然后,您的其他活动可以在

onResume
中检查此首选项,如果该首选项为
true
,则发送
Intent
以重新启动Interstitual-向用户显示,他们正在以与离开应用程序相同的状态恢复应用程序(Interstitual)

编辑:如果屏幕需要保留(而不是重新实例化),则可以使用,但您必须担心配置更改。有一个黑客你可以尝试(解释中)——


使用
android:label=”“
将标签设置为空
您最近的任务被排除。然而,这是一个明确的黑客行为,可能会产生不一致的结果(因为我还没有测试过它)

我试图模拟UsbDebuggingActivity的行为,当您第一次通过adb连接它时,它会在4.x设备上弹出。当弹出“最近的应用程序”时(尽管我目前无法从代码中看到),活动似乎会破坏自身。好的,它在清单中使用
finishOnCloseSystemDialogs=true
。我可能也应该这么做,在这里报道。拥有finishOnCloseSystemDialogs并没有多大帮助——点击“最近的任务”后,活动不会消失,这与android内部的UsbDebuggingActivity不同。我决定不花太多时间在这上面,并用其他方法解决了我最初的问题,所以我不必从最近的任务中排除任何东西。@RicardoLage,
+100
,因为没有其他人比我有更好的answe但是。。。你有关于这个话题的最新消息吗?从2013年开始,当你写下这个答案时,你有没有发现与这个问题相关的其他有趣信息?请分享你的经验。非常感谢。完成活动不是一个选项。活动需要保持活动状态。如果它确实需要保持活动状态(vs recreate),那么我唯一的建议就是尝试显式设置一个空标签。我不确定这种攻击是否在所有最新版本的设备上都有效,所以一些测试可能会被认为不是噪音。标签修复已经被证明是有效的,这里没有建议,也没有在问题中标记为尝试过的东西。这是你的项目被破坏了,所以你需要在更多的设备上测试,以确定它是否适合你的情况。我已经测试了
android:label=“
以及
android:label=“@null”
。他们都没有做任何改变。使用android:label=“”和android:excludeFromRecents=“true”对Fire TV有效,谢谢你的提示!
intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);