【发布时间】:2013-10-13 21:03:17
【问题描述】:
如here所说,当屏幕熄灭时,当前Activity的onStop()会被调用。当我的Activity 的onStop() 被调用时,我需要检查屏幕的开/关状态。所以我为这些操作注册了一个BroadcastReceiver(ACTION_SCREEN_ON 和ACTION_SCREEN_OFF)来记录当前的开/关状态(它们工作正常,我已经登录了!)。
但是当我关闭屏幕并检查 onStop 中的开/关状态时,它说屏幕已打开。为什么?我认为接收者必须在调用onStop 之前收到ACTION_SCREEN_OFF,这是怎么回事?
【问题讨论】:
-
"我认为接收器必须在调用 onStop 之前收到 ACTION_SCREEN_OFF,所以怎么了?" ——我不知道你为什么会这么认为。使用
Log语句或断点来查看首先调用哪个。更好的是,重新设计您的应用程序,以不在乎是否因为屏幕正在关闭而调用onStop(),而不是任何其他原因。 -
@CommonsWare 应用程序必须能够区分
onStop被调用的不同情况,所以我必须知道关闭屏幕是否导致onStop被调用或其他事情。有更好的解决方案吗? -
“应用程序必须能够区分调用 onStop 的不同情况”——为什么?无论屏幕关闭、用户按下 HOME、用户按下 BACK、用户接听来电、用户点击通知或用户做了其他任何事情,这对您的应用程序有什么影响导致您的活动不再可见?屏幕关闭通常不是特殊情况。
-
因为我正在开发一个解锁器应用程序,任何导致调用
onStop的事情都应该在我的应用程序中处理,所以我试图定义任何调用onStop的情况,这样我就可以在按下主页按钮和其他按钮之间有所不同。无论如何!让我们回到我的第一个问题!你有什么想法吗? -
当我们打开或关闭屏幕时,您想在
onStop中做什么?也许有更简单或其他方式来完成工作。
标签: android android-activity android-broadcast