之前关闭屏幕为时已晚

lor*_*off 4 android screen screen-off

我有一个活动,它的onPause必须做一些工作,但不是屏幕关闭时.我已经注册了接收器的ACTION_SCREEN_OFF意图,理论上,这和应用程序级别的静态标志应该做的但是......它不起作用,因为onPause在接收器可以获得其意图之前调用活动的回调.那就是:logcat*ting*在按下空闲按钮的同时,我可以看到第一个onPause跟踪和onReceive之后的跟踪.此时,设置静态标志并不是很重要......

是否有可能知道onPause屏幕关闭时的活动时间?

在此先感谢
L.

Rub*_*uck 9

我有同样的问题,接收器不是要走的路

android开发者

http://developer.android.com/reference/android/content/BroadcastReceiver.html

"注意:如果在Activity.onResume()实现中注册一个接收器,你应该在Activity.onPause()中取消注册它.(暂停时你不会收到意图,这将减少不必要的系统开销).在Activity.onSaveInstanceState()中取消注册,因为如果用户在历史堆栈中移回,则不会调用此方法."

而是在你的onPause方法中创建一个电源管理器[我从这个链接获得它]

如何在Android设备上找到屏幕状态?

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;    
}
Run Code Online (Sandbox Code Playgroud)