4

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

有没有可能在活动onPause时知道屏幕已关闭?

在此先感谢
L。

4

1 回答 1

9

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

安卓开发者

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

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

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

如何在安卓设备上查看屏幕状态?

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;    
}
于 2012-09-09T10:20:23.383 回答