5

BroadcastReceiver を使用して、電話がディープ スリープ モード (ソケットでの着信データ パケットや着信テキスト メッセージなど) であっても電話を目覚めさせるイベント (インテント) を受信するとします。次に、受信したデータを IntentService に転送して処理します。WakeLock を使用する必要がありますか?

ウェイクロックを使用しない場合、サービスのインテント キューが空になるまで (したがってサービスが停止するまで) デバイスがスリープ モードにならないことを確認できますか? (処理に時間がかかる場合があるとします)。

WakeLock が必要な場合、WakeLock をいつどこで作成して取得し、いつ解放する必要がありますか? サービスのインテント キューが空になったら、すぐに WakeLock を解放したいと考えています。

前もって感謝します

4

1 に答える 1

2

インテント キューを通過するのに十分な時間、デバイスが起動しているとは限りません。インテントを迅速に処理することが本当に重要な場合は、 で次のようなことを行うのが最善の策ですonHandleIntent

mWakeLock.acquire();  // mWakeLock should be set to be reference counted

// (do work)

mWakeLock.acquire(1000);  // hopefully long enough to get to the next item
mWakeLock.release();
于 2011-05-22T21:19:01.033 に答える