私は同じ問題を抱えていて、受信機は行くべき道ではありません
アンドロイド開発者
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;
}