8

https://github.com/commonsguy/cwac-wakefulデモでは、アラームに応答してOnAlarmReceiver(BroadcastReceiver)onReceive()メソッドが呼び出されます。onReceive()メソッドはサービスを開始します。使用されるインテントは2つあり、1つはBroadcastReceiverによって受信され、もう1つはサービスによって受信されます。これは必要以上に複雑に思えますが、サービスにAlamManagerからインテントを受信させるだけではどうでしょうか。

onReceive()の実行中、つまりウェイクロックでラップされている間、電話はスリープしないことが保証されていることを理解しています。Serviceクラスが同様の保証を提供するかどうかはわかりません。

電話がスリープから復帰し、ウェイクロックが取得されるまでスリープしないことを保証しながら、アラームから直接サービスを開始する方法はありますか?

4

1 に答える 1

14

これは必要以上に複雑に思えますが、サービスが AlamManager からインテントを受け取るようにしないのはなぜですか?

Android は、 が呼び出されるのに十分な時間、デバイスが起動していることを保証しないためgetService() PendingIntentです。保証はaのみですgetBroadcast() PendingIntent。Android はWakeLock、通話の間、デバイスが ( a を介して)起動したままであることを保証しますonReceive()

私を信じてください、スキップできればいいのにと思います。

于 2011-09-16T12:15:13.133 に答える