【问题标题】:Funky android activity behavior when screen turns off?屏幕关闭时的时髦 android 活动行为?
【发布时间】:2010-11-28 16:49:21
【问题描述】:

当 android 关闭屏幕并锁定屏幕时,我看到了一些有趣的活动流程......我的应用程序通过常规流程,onCreate、onStart 和 onResume。然后,我让我的手机坐在那里。当屏幕变黑时,调用 onPause。没关系。然后 5 秒后,应用程序被终止(onStop,onDestroy)。那也很好。但是立即在 onDestroy 被调用之后,onCreate、onStart 和 onResume 被调用,即使屏幕是空白的也会重新启动应用程序。该应用程序有加载时间,并且在启动时会播放声音,因此当您在 30 秒前放下的手机开始播放声音时,这有点令人毛骨悚然。为什么android会杀死应用程序然后重新启动它?目标是 2.1 更新,手机是三星 Captivate。其他人看到这个,并知道如何阻止它?

【问题讨论】:

    标签: android android-activity screen


    【解决方案1】:

    这可能不是您所看到的,但在我的手机上,会发生这种情况,因为睡眠模式始终处于一个方向,如果应用程序处于另一个方向,它会被杀死并在睡眠方向重新创建.. . 如果你问我,那不是最理想的。

    在我看来,您可能没有将诸如启动声音之类的事情与足够具体的原因联系起来。如果在手机“开机”时旋转手机会发生什么?无论如何,您应该能够检测到屏幕未打开并且不会执行(或推迟)真正的启动。

    如果隐式方向更改是罪魁祸首,您可以更改应用程序的处理方式 - 设置声明您的应用程序可以即时更改,而不必重新创建。

    【讨论】:

    • 我认为 Chris Stratton 在这里是正确的。您还可以在此相关问题中找到有关如何处理此问题的更多信息:stackoverflow.com/questions/456211/…
    • 应用被锁定为横向模式。在运行时更改方向无效。但我可以看到 android 在睡眠期间如何尝试将其重新启动为纵向模式。是时候寻找可以告诉我屏幕是打开还是关闭的例程了。
    • 您可能想在屏幕进入睡眠状态时尝试观看 logcat,如果您有类似 unix 的开发机器,您可以执行类似 adb logcat | 的操作。 tee 日志文件并稍后返回查看。如果它正在做睡眠方向的事情,你会在日志文件中看到这个
    • 是的,看看 logcat。我看到“配置更改”通过,并且在我的应用程序中调用 onStop 后不久将其杀死。多么蹩脚。如果手机在应用程序期间进入睡眠状态,我会被杀死......我不会像其他人一样继续 onPause 和 onResume,我必须从头开始(我尝试覆盖所有关闭功能并忽略超级情况下,但它只是崩溃)。我会想办法解决这个问题。
    • 如果你设置的东西是你说你处理正在运行的应用程序中的方向变化,你不应该再被杀死和重新创建。
    【解决方案2】:

    在活动的清单中,为每个应用程序添加:

    android:configChanges="orientation|keyboardHidden"
    

    这告诉 android 你将自己处理这两种情况 - 尽管你当然在撒谎:你不会为了处理它们而做任何事情,但 Android 不知道这一点。这对于在横向模式下运行并且永远不会改变方向的应用程序/游戏/等非常有用。

    【讨论】:

    • 谢谢!它只能以这种方式工作 android:configChanges="orientation",但它对我有好处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多