@pahaによる答えは重要なポイントを見逃しています:IntentServiceは十分ではありません。 onReceive()
の間 が終了し、IntentServiceが開始されると、電話が再びスリープ状態になる可能性があります。このギャップを埋めるには(静的)ロックが必要です。これは、MarkMurpphyのWakefulIntentService
に実装されています。
したがって、AlarmManagerとレシーバーは保持しますが、 WakefulIntentService
を起動します。 onReceive()
から 。
参照:
- Androidのディープスリープとウェイクロック
- PowerManagerウェイクロックがデバイスをサービスからウェイクアップしない