1

(ウェイクロックを取得したサービスから) バックグラウンドで何らかの作業を行うためにスレッドを実行したいと考えています。私のスレッドが作業を終了した後、サービスを停止します。

私の懸念は次のとおりです。

1- サービスで開始されたスレッドでウェイクロックを要求する必要がありますか?

2- サービスを実行したまま、システムはスレッドを強制終了できますか?

3- 2 の場合、どうすればサービスを停止できますか (サービスが終了するタイムアウト時間をサービスに与えることはできますか)

4

1 に答える 1

2
  1. 私が理解しているように、WakeLocks は Android コンポーネント (サービス、アクティビティなど) とそれに関連するすべてのスレッドに適用されます。したがって、スレッドで新しいウェイクロックを取得する必要はありません。取得したロックを渡し、開始されたスレッドから isHeld を呼び出すことで、これを証明できます。

  2. 部分的なウェイクロックを検討する必要があります。これは、画面やキーボードのアクティビティに関係なく、CPU の実行を維持することのみに関係します。これはサービスなので、画面がオンになっているかどうかは気にしないと思います。

ここに記載されていることに注意してください。部分的なウェイクロックを保持している場合、タイマーに関係なく、ユーザーが電源ボタンを押した後でも、CPU は実行を続けます。他のすべてのウェイクロックでは、CPU は実行されますが、ユーザーは電源ボタンを使用してデバイスをスリープ状態にすることができます。

編集:また、あなたが提案した方法でそれを行うことができますが、バッテリー消費のために子スレッドでのみウェイクロックを取得して解放する方が良いかもしれません. また、この作業に WiFi を使用する必要がある場合は、WiFiLock も必要になる場合があります。

于 2012-01-25T21:51:29.167 に答える