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);