2

アプリで CPU を稼働させたまま、画面をオフにして電力の浪費を最小限に抑えたいと考えています。

このテーマに関する以前の投稿では、次のアプローチが提案されています。

    mPm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock =  mPm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.WAKE_LOCK_TAG);

    mWakeLock.acquire();    //keep CPU running, turn screen off

マニフェストには次が含まれます。

    <uses-permission android:name="android.permission.WAKE_LOCK" />

無邪気な私は、ロックを取得すると画面がすぐに消えると思っていましたが、何も起こりませんでした。私が読んだ以前の投稿では、この問題を解決できなかったようですが、成功した人はいますか? 他に何かしなければならないことはありますか?

4

2 に答える 2

3

onCreateアクティビティのメソッド内でこれを別の方法で使用すると、より効率的です。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

これは、ウェイクロックを効率的に使用するためのより良い方法です。

于 2013-01-23T17:41:01.670 に答える
2

wake lock は画面をオフにしません。通常、画面が消えると、CPU がスリープ状態になるため、アプリケーションは一時停止します。がある場合PARTIAL_WAKE_LOCK、アプリは引き続き実行され、画面がオフになっても CPU はアクティブになります (自動または手動のスリープが原因で)。画面がオフになった後もデータの処理を続行する必要がある場合にのみ、これを使用してください。あなたは、電力使用量を最小限に抑えることに関心があると述べていますが、あらゆる種類のウェイクロックを取得すると、電力が浪費される可能性があります。ドキュメントからのこの警告に従うのが賢明ですPowerManager

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

そのため、タスクに wake lock が必要な理由を評価することをお勧めします。省電力すぎると思われる場合は、そうではありません。

于 2013-01-23T17:35:39.000 に答える