デバイスが Doze モードに入ったときに Android で取得する単一の信頼できるコールバックを特定しようとしています。私は次のことを試しました:
IntentFilter filter = new IntentFilter();
filter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("ajitha", "intent action=" + intent.getAction()
+ " idleMode=" + pm.isDeviceIdleMode());
}
}, filter);
super.onResume();
上記のコード サンプルでは、デバイスが居眠りしているときにレシーバーが何度もヒットしています。私の試行実行では、logcat は次のように表示されました。
Line 103: 08-25 15:41:21.814 I/PowerManagerService( 845): Going to sleep due to power button (uid 1000)...
Line 114: 08-25 15:41:22.601 I/PowerManagerService( 845): Dozing...
Line 144: 08-25 15:41:36.834 D/ajitha ( 6985): intent action=android.os.action.DEVICE_IDLE_MODE_CHANGED idleMode=true
Line 146: 08-25 15:41:37.458 D/ajitha ( 6985): intent action=android.os.action.DEVICE_IDLE_MODE_CHANGED idleMode=false
Line 150: 08-25 15:41:38.268 D/ajitha ( 6985): intent action=android.os.action.DEVICE_IDLE_MODE_CHANGED idleMode=true
Line 154: 08-25 15:42:08.669 D/ajitha ( 6985): intent action=android.os.action.DEVICE_IDLE_MODE_CHANGED idleMode=false
Line 156: 08-25 15:42:09.287 D/ajitha ( 6985): intent action=android.os.action.DEVICE_IDLE_MODE_CHANGED idleMode=true
Line 175: 08-25 15:42:58.935 I/PowerManagerService( 845): Waking up from dozing (uid 1000)...
Line 200: 08-25 15:42:59.273 D/ajitha ( 6985): intent action=android.os.action.DEVICE_IDLE_MODE_CHANGED idleMode=false
インテントが何度もヒットすると、このインテントに応じてアクションを実行できなくなります。デバイスが居眠り状態に入ったことを特定するために信頼できる他の意図はありますか???
このインテントが何度もヒットするのはなぜですか???