4

デバイスが 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

インテントが何度もヒットすると、このインテントに応じてアクションを実行できなくなります。デバイスが居眠り状態に入ったことを特定するために信頼できる他の意図はありますか???

このインテントが何度もヒットするのはなぜですか???

4

0 に答える 0