2

サービスとハンディは常に動作する必要があるため、サービスでWakelockを使用しています。それは非常にうまく機能しますが、バッテリーの消耗が非常に速くなります。

実際には、ウェイクロックの私のコード:

    public static PowerManager pm;
    public static PowerManager.WakeLock wl;
    wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
    wl.acquire();

サービスが閉鎖されている場合、私はそうします

    wl.release();

それは方法だと思いますが、最善ではありません。そしてもう1つ質問なのですが、「マイタグ」は何に使えるのでしょうか。多分あなたは私を助けることができます。ありがとう。

4

1 に答える 1

1

ドキュメントが言うように:

この API の使用は、デバイスのバッテリー寿命に大きな影響を与えます。本当に必要な場合を除き、PowerManager.WakeLocks を取得しないでください。可能な限り最小限のレベルを使用し、できるだけ早く解放してください。

そのため、WakeLock を長時間使用すると、確実にバッテリーが消耗します。そのための回避策はありません。WakeLocks は、電話がスタンバイ モードになるのを防ぐために使用され、CPU をオンに保ちます。おわかりのように、CPU をオンにしておくと、バッテリーが消耗します。

私の提案は、必要なときにのみウェイクロックを取得し、その後すぐに解放することです! あなたの目標が何であるかを教えていただければ、私たちはあなたを助けることができます.

「MyTag」はデバッグ用にのみ使用されます。たとえば、例外が発生した場合、logcat は、その原因となった WakeLock の名前として「MyTag」を出力します。

于 2013-05-17T08:07:43.297 に答える