flutter backgroud処理調べ
static Future<bool> oneShotAt(
DateTime time,
int id,
Function callback, {
bool alarmClock = false,
bool allowWhileIdle = false,
bool exact = false,
bool wakeup = false,
bool rescheduleOnReboot = false,
Map<String, dynamic> params = const {},
})
GitHub Corpolate Chat曰く
alarmClockとallowWhileIdleは、AlarmManagerクラスのメソッドのオプションで、アラームを発生させる方法を制御するために使用されます。以下は、両方のオプションの違いです。
アラームの発生方法: alarmClockオプションは、デバイスのアラームクロックを使用してアラームを発生させます。一方、allowWhileIdleオプションは、デバイスがDozeモードに入っている場合でもアラームを発生させるために、一定の条件下でアラームを発生させます。
デバイスの省電力機能への影響: alarmClockオプションは、デバイスの省電力機能であるDozeモードに影響を受けません。一方、allowWhileIdleオプションは、デバイスがDozeモードに入っている場合でもアラームを発生させることができますが、アプリケーションのバックグラウンド処理が制限され、アラームや通知などの一部の処理が遅延されることがあります。
アプリケーションのバッテリー消費: alarmClockオプションは、デバイスのアラームクロックを使用してアラームを発生させるため、アプリケーションのバッテリー消費を抑えることができます。一方、allowWhileIdleオプションは、デバイスがDozeモードに入っている場合でもアラームを発生させるため、アプリケーションがバッテリー消費を抑えるように設計する必要があります。
以上のように、alarmClockオプションとallowWhileIdleオプションは、アラームを発生させる方法やデバイスの省電力機能への影響、アプリケーションのバッテリー消費などの点で異なります。アプリケーションの要件に応じて、適切なオプションを選択する必要があります。
パターンA
AndroidAlarmManager.oneShotAt(
dateTime,
id,
callback,
alarmClock: true,
allowWhileIdle: false,
);
パターンB
AndroidAlarmManager.oneShotAt(
dateTime,
id,
callback,
alarmClock: false,
allowWhileIdle: true,
);
パターンC
AとBは30min以上あとのスケジュールはスマホのロックを解除しないと何故か動かない。
Cはalarm
パッケージの実装で、動作実績あり。
alarmClock
とallowWhileIdle
の違いがわからぬ。