0

BroadcastReceiverを拡張してSensorEventListenerを実装するクラスを作成できないのはなぜですか?このクラスは、アプリケーションで設定されたアラームインテントを受け取ります。

実装されたonSensorChangedメソッド内に設定されたクラスインスタンス変数があります。onReceiveメソッドで、リスナーを登録し、クラスインスタンス変数が設定されるまで実行されるwhileループを作成します。ループの後、リスナーの登録を解除します。ただし、変数が設定されることはなく、ループは実行され続けます。

ここでの答えによると、私は放送受信機の中にリスナーを登録してはいけません:

リスナー付きのBroadcastReceiverは、使用していないときにバッテリーを消耗します

AlarmManagerドキュメントには、デバイスがスリープしていることに関するこれらの警告がすべてありますが、私の場合、デバイスはスリープしません。

4

1 に答える 1

0

この投稿によると:

Serviceの代わりにAlarmManagerとBroadcastReceiver-それは悪いですか?(タイムアウト)

onReceiveメソッドはメインアプリケーションスレッドで実行され、多くの作業を実行できないか、タイムアウトします。ワークロードをIntentServiceに移動するだけで、問題を修正できます。

于 2012-09-16T10:18:44.103 に答える