说我的应用程序正常运行,显示活动A.然后用户锁定手机。尽职尽责地去睡觉(onPause()
)。在屏幕关闭的某个时刻,我需要向用户展示一些东西。所以从我的后台代码(服务),我为B调用startActivity,传递以下标志:
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_NEW_TASK
在B的onCreate()
中,我添加了以下窗口标志
FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON
FLAG_DISMISS_KEYGUARD
一切正常 - B现在出现在键盘上方。
稍后,我希望解雇B,所以从B中我打电话dismiss()
,按预期工作。而这里出了问题:
我没有返回锁屏,而是在锁定屏幕上运行A.
当我解雇B时,如何阻止操作系统恢复A?
感谢。
答案 0 :(得分:0)
如果我猜对了Android只是显示属于你的应用的活动堆栈上的下一个活动。我会尝试拨打其他应用,例如活动B退出时的主屏幕,以便锁屏跳跃到前面。
您也可以尝试使用标记FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
:
如果设置,则新活动不会保留在最近启动的活动列表中。