2012-01-25 7 views
1

スレッドを実行して、バックグラウンドで(ワークロックを取得したサービスから)何らかの作業をしたいのですが。スレッド終了後、サービスを停止します。wakelockを持つサービスから実行しているスレッドにwakelockが必要ですか?

私の懸念は、以下のとおりです。

1-私はサービスで開始されたスレッドでwakelockを要求する必要がありますか?

2サービスを停止したままシステムがスレッドを強制終了できますか? 2は私が私のサービスを停止する可能性がどのケースであれば、私はアンドロイドに適用理解し

3-、

答えて

2
  1. WakeLocksがある(私はサービスにそれはそれの後に死んでしまうことにタイムアウト時間を与えることができます)コンポーネント(例えば、サービス、アクティビティなど)およびそれに関連するすべてのスレッドを含む。だからあなたはあなたのスレッドに新しいウォークロックを取得する必要はありません。取得したロックを渡して、開始されたスレッドからisHeldを呼び出すことで、これを証明できます。あなたが部分的wakelockを検討すべきである

  2. 、これは関係なく、画面やキーボードの活動の、唯一のCPUの稼働を維持する懸念されます。これはサービスなので、画面が表示されているかどうかは気にしません。あなたが部分的wakelockを保持した場合、CPUは関係なく、すべてのタイマーの実行を継続すると、ユーザは、電源ボタンを押した後でも:それはhereを述べていること

注意。他のすべてのWakelockでは、CPUは動作しますが、電源ボタンを使用してデバイスをスリープ状態にすることはできます。

編集:あなたが示唆したようにそれを行うこともできますが、のほうが良いかもしれません。は、バッテリー消費のために子スレッドにwakelockを取得して解放します。また、この作業にWiFiを使用する必要がある場合は、WiFiLockが必要な場合があります。

関連する問題