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;    
}