0

CWAC Advanced Android book の AlarmManager に関するセクションがとても気に入っています。ウェイクロックがないため、アプリの作業が殺されるのではないかと心配しています。ここで私が心配していることです。私の心配は合理的ですか?

以下のコードを参照してください。doWakefulWork が別のサービスを開始する必要がある場合はどうなりますか? この場合、他のサービスは実行を継続するために WakeLock を取得する必要がありますが、サービスの開始と onHandleIntent の終了の間にウェイクロックが解放される時間のギャップがあります。

@Override
final protected void onHandleIntent(Intent intent) {
 try {
  doWakefulWork(intent)
  }
 finally {
   getLock(this).release();
 }
}

私の答えは次のとおりです。doWakefulWork は同じスレッドで実行する必要があります。他のサービスも WakefulIntentService インスタンスでない限り、他のスレッドやサービスを開始することはできません。

私は正しいですか?

4

1 に答える 1

1

他のサービスに を保持させたい場合はWakeLock、はい、それらは であるか、それ自体で をWakefulIntentService取得する必要があります。WakeLockインテントを送信してから他のサービスが実際にロックを取得するまでの時間が心配な場合は、何らかのタイプのブロック メカニズムを実装する必要があります (つまりdoWakefulWork、他のサービスが開始してロックを取得するまで、メソッドの終了をブロックします)。 )

于 2011-05-04T19:06:06.007 に答える