5

假设我的应用程序运行正常,显示 Activity A。然后用户锁定手机。A 尽职尽责地睡觉 ( onPause())。在屏幕关闭的某个时候,我需要向用户展示一些东西。因此,从我的后台代码(服务)中,我为 B 调用 startActivity,并传递以下标志:

FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_NEW_TASK

onCreate()B 中,我添加了以下窗口标志

FLAG_SHOW_WHEN_LOCKED 
FLAG_TURN_SCREEN_ON 
FLAG_DISMISS_KEYGUARD 

一切正常 - B 现在出现在键盘保护的顶部。

稍后,我希望解雇 B,因此在 BI calldismiss()中,按预期工作。这就是问题所在:我现在没有返回锁定屏幕,而是在锁定屏幕顶部运行了 A。

当我解雇 B 时,如何阻止操作系统恢复 A?

谢谢。

4

1 回答 1

0

如果我猜对了,Android 只会在属于您的应用的 Activity 堆栈上显示下一个 Activity。我会尝试调用另一个应用程序,例如 Activity B 退出时的主屏幕,这样锁屏就会跳到前面。

您也可以尝试使用标志FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

如果设置,则新活动不会保留在最近启动的活动列表中。

于 2013-01-25T07:20:10.027 回答