我有同样的问题,接收器不是要走的路
安卓开发者
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;
}