【问题标题】:Android changes activity when it goes to sleepAndroid 在进入睡眠状态时更改活动
【发布时间】:2014-05-05 23:45:16
【问题描述】:

我正在维护一个控制工业流程的 Android 应用。它有一个主 Activity/screen 允许您选择各种工业任务,并且每个任务都有自己的 Activity/screen。

问题 - 如果用户处于这些其他活动之一并且机器人进入睡眠状态(比如因为工人休息或去吃午饭),当它再次醒来时它又回到主活动中!

这很难调试,因为要调试它,我必须连接到 USB,当它连接到 USB 时它不会进入睡眠状态。

1. 哪些 Activity 生命周期事件与它进入睡眠状态相关联?进入睡眠实际上意味着什么 - 显示屏关闭,但显然其他事情也在发生,因为当它醒来时它处于不同的活动中。

2. 有没有办法让它即使在连接到 USB 时也能进入睡眠模式,这样我就可以设置断点并正确调试它?

详情:

  • 运行 2.35 的三星 Galaxy Player(基本上是没有手机的三星手机)。
  • 进入睡眠状态时打开的 Activity 使用默认的标准启动模式。

【问题讨论】:

  • onPause 可能是您想要查看的位置。继续阅读activity lifecycle
  • 如果 onPause 被调用,我不会感到惊讶(鉴于调试困难,有什么好方法来确认它),但这将如何解释它回到主 Activity 呢?如果系统导致activity进入暂停状态,为什么再次唤醒时不调用onResume?
  • 我不知道,我需要查看代码。也许 onPause 代码正在某些条件下完成活动?

标签: android


【解决方案1】:

当android进入睡眠状态时,最顶层的activity接收onPause,但它仍然是activity栈中最顶层的activity,因此它将接收onResume并在设备唤醒时启动。

您在设备唤醒时看到主要活动的原因是您的 onPause 中应该有一些代码会强制在 onPause 之后完成最重要的活动(类似地,可能有一些设置。例如,将 noHistory 设置为 true在 AndroidManifest.xml 中,Activity 会在收到 onPause 时强制该 Activity 自行关闭,因此当您返回时,您会在顶部看到 Main Activity。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2017-06-23
    • 2012-07-14
    相关资源
    最近更新 更多