之前关闭屏幕为时已晚

时间:2011-12-16 16:41:41

标签: android screen screen-off

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

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

提前致谢
L.

1 个答案:

答案 0 :(得分:9)

我遇到了同样的问题而接收器不是那种方式

android开发人员

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

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

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

how to find out screen status on an android device?

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