Android 在这之前关掉屏幕已经太晚了
我有一个活动,在暂停时必须做一些工作,但在屏幕关闭时不能。 我已经为Android 在这之前关掉屏幕已经太晚了,android,screen,screen-off,Android,Screen,Screen Off,我有一个活动,在暂停时必须做一些工作,但在屏幕关闭时不能。 我已经为ACTION\u SCREEN\u OFFintent注册了接收器,从理论上讲,这和应用程序级别的静态标志应该可以做到这一点,但是。。。它不起作用,因为在接收者能够获得其意图之前调用了活动的onPause回调。 也就是说:logcat*ting*按下idle按钮时,我可以首先看到onPause跟踪,然后看到onReceive。 此时,设置静态标志不是很重要 是否有可能在活动的onPause时间知道屏幕已关闭 提前感谢 L.我也遇
ACTION\u SCREEN\u OFF
intent注册了接收器,从理论上讲,这和应用程序级别的静态标志应该可以做到这一点,但是。。。它不起作用,因为在接收者能够获得其意图之前调用了活动的onPause
回调。
也就是说:logcat*ting*按下idle按钮时,我可以首先看到onPause
跟踪,然后看到onReceive
。
此时,设置静态标志不是很重要
是否有可能在活动的onPause
时间知道屏幕已关闭
提前感谢L.我也遇到了同样的问题,一个接受器不是最好的选择 安卓开发者 注意:如果在Activity.onResume()实现中注册接收者,则应在Activity.onPause()中注销该接收者。(暂停时不会收到意图,这将减少不必要的系统开销)。不要在Activity.onSaveInstanceState()中注销该接收者),因为如果用户在历史堆栈中向后移动,则不会调用此函数。“ 相反,在onPause方法中创建一个电源管理器[我从这个链接获得]
当然,当屏幕关闭时,会调用onPause。这有什么问题?如果每次调用onPause时都需要做一些工作,则没有什么问题。不幸的是,只有在屏幕没有关闭的情况下,我才能在onPause中完成这项工作。所以问题是:我如何及时意识到屏幕消失了?BroadcastReceiver不好:太慢了……如果屏幕打开,你需要做什么工作?当显示器从用户处收回时,调用onPause,暗示(形象且有效)表示屏幕处于“关闭”状态。我不明白为什么关上屏幕做这项工作很重要。不,与工作有关,但我喜欢这个标题。真是太。。。戏剧性的.-)你可以覆盖idle键,然后在你的应用程序中,你可以做任何你需要做的事情,然后在需要时使用以下方法使屏幕变暗:
public void onPause(){
PowerManager powermanager =(PowerManager)global.getSystemService(Context.POWER_SERVICE);
if (powermanager.isScreenOn()){
screen_off_beforePause = false;
//your code here
}else{
screen_off_beforePause = true;
}
}
public void onResume() {
if (screen_off_beforePause){
Log.e(TAG + ".onResume()", "screen was off before onPause");
}else{
Log.d(TAG + ".onResume()", "screen was not off before onPause");
//your code here
}
//resetting
screen_off_beforePause = false;
}