0

私は Alarm Manager の使用を検討しており、開発者向けドキュメントでこれを読んでいますが、これはよくわかりません。

"If your alarm receiver called Context.startService(),
it is possible that the phone will sleep before the
requested service is launched. To prevent this, your
BroadcastReceiver and Service will need to implement a
separate wake lock policy to ensure that the phone
continues running until the service becomes available."

サービスが開始される前に電話がスリープ状態になる可能性がある状況を具体的に尋ねています(これは私が理解できない部分であるため)。電話がステートメントを実行できる速度に依存していますか? すなわち。別のスレッドを開く startService() を呼び出すため、元のスレッドはサービスが利用可能になる前に作業を完了することができますか?

ありがとう

4

1 に答える 1

1

BroadcastReceiver からサービスを開始する場合は、レシーバーの onReceive() 中にデバイスがスリープしないことが保証されるだけです。この質問によると、startService() は非同期です。つまり、サービスの開始中に onReceive() が終了するのをブロックしません。したがって、サービスが確実に開始されるようにする必要がある場合は、独自の WakeLock を実装する必要があります。

于 2012-02-12T08:59:09.397 に答える