【问题标题】:Activity on lockscreen - dismissing it resumes previous activity锁屏上的活动 - 关闭它会恢复以前的活动
【发布时间】:2013-01-24 21:48:05
【问题描述】:

假设我的应用程序运行正常,显示 Activity A。然后用户锁定手机。 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?

谢谢。

【问题讨论】:

  • 我有一个类似的问题几个月没有解决,终于想弄清楚了。 B 显示正常,但是一旦我关闭它,一旦我解锁锁定屏幕,A 就会弹出。我确实用一些静态变量解决了这个问题,但这并不理想。
  • 在搞砸了一点之后,我在启动我的活动时使用了Intent.ACTIVITY_MULTIPLE_TASK,因为我在锁定屏幕上显示的活动是独立的 - 它只需要一些共享的偏好,但不依赖于其他活动。
  • 嗯..在我的情况下这行不通。在最近的应用程序列表中,我的应用程序显示在屏幕 B 上(或者有时没有最近的应用程序).​​. 如果我的应用程序在锁定手机之前运行(无论是在后台还是前台),我会喜欢它保持在锁定之前的状态(所以运行......无论是在后台还是前台)
  • 我实际上遇到了一个相反的问题 - 我希望 activtiy A 仍然会关闭锁屏。我认为这是默认行为。也许您没有提到与锁定屏幕相关的其他内容?你对活动 A 做过什么吗?
  • 我没有对 A 做任何事情 - 当用户锁定手机时(或者当 A 处于活动状态(在屏幕上)时,当用户按下主页键或返回按钮时),A 将暂停。

标签: android android-activity lockscreen keyguard


【解决方案1】:

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

您也可以尝试使用标志FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

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

【讨论】:

  • 但是调用没有标志的其他活动来显示在锁屏上确实可以确保一旦屏幕被解锁,我开始的任何活动都是可见的——但是,它仍然偏离了 android 的标准行为,即在锁定之前显示手机的状态 - 这就是我想要复制的内容。我又进了一步.. 按照the answer of this question 重新锁定屏幕将返回锁定屏幕 - 现在只有在解锁后没有显示 A 时,我才会是金色的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多