PowerManager (電力サービス)


このセクションの紹介:

このセクションでは、Android が提供するシステム サービス - PowerManager (電源サービス) について説明します。 CPU の実行とキーボードまたは画面の点灯を管理します。ただし、必要な場合を除き、このクラスを使用しないでください。 使用後は必ず時間内に解除してください。この B については、根底にあるものが関係しているため、このセクションではあまり深く説明しません。 今後さらに深く勉強する必要があること ~ このセクションでは主にいくつかの基本的な概念、PowerManager、wakelock について紹介します。 ロック機構など!

公式 API ドキュメント: PowerManager


1. PowerManager とは


Android システムによって提供される電源管理用の API は、デバイスのバッテリー寿命と密接に関係しています。 公式はまた、絶対に必要な場合を除き、このクラスの使用を避け、使用後は時間内に解放するように努めるべきだとも述べています。いわゆる電源管理には、CPU の実行、キーボードまたは画面の点灯が含まれます。

ウェイクロックロック

の仕組みは、このロックを保持している限り、 この場合、システムはスリープ状態に入ることができず、ユーザー モード プログラムまたはカーネルによってスリープ状態に入ることができます。ロックは「タイムアウト付き」または 「タイムアウトなし」、時間が経過すると、タイムアウト ロックは自動的にロック解除されます。ロックまたはタイムアウトがない場合、カーネルはスリープ メカニズムを開始してスリープに入ります。

2. ウェイクロック ロックの紹介


PowerManager.WakeLock

2 つの状態: lockedunlocked があり、ロックには 2 つの形式があります:

永続的にロック

この種のロックは、明示的に解放されない限りロックは解除されません。細心の注意を払って使用する必要があります。

タイムアウト ロック

は、時間が経過するとロックが解除されます。 WakeLock を作成すると、2 つのロック メカニズムがあります: ①非カウント ロック メカニズム②カウント ロック メカニズム (デフォルト) を渡すことができます setReferenceCounted (boolean) value) を指定する場合の違いは次のとおりです。 前者では、acquire()を何度使っても、一度release()をすればロックを解除できます。 後者には (--count == 0) が必要で、(count == 0) の場合にもロックに適用されます。 したがって、WakeLockのカウントメカニズムは、本当の意味でリクエストごとにロックを適用/解放するものではありません。 同じロックが適用/解放されたの回数を数えてから、先に進みましょう。

追伸:より深い内容については、基礎となる内容に関わるものであり、著者のレベルは限られており、私はまだそのレベルに達していません。 ここでは詳しく説明しません。必要に応じて、後で別の記事を書きます。

3. PowerManager の使い方

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock w1 = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "MyTag");
w1.acquire();
//在这个过程,屏幕会保持光亮!
w1.release();

上記の最初の
フラグ

newWakeLock ( ) マーク 、これらのマークはさまざまな程度でシステム電力に影響を与えます

これらのタグは排他的であり、一度に 1 つだけ指定できます。

PARTIAL_WAKE_LOCK: CPU を実行したままにすると、画面とキーボードのライトがオフになる場合があります。

SCREEN_DIM_WAKE_LOCK: CPU を実行し続け、画面表示を維持できますが、灰色になる場合があります。キーボード ライトをオフにすることができます

SCREEN_BRIGHT_WAKE_LOCK: CPU を実行し続け、画面を強調表示したままにし、回転を許可しますキーボード ライトをオフにします

FULL_WAKE_LOCK : CPU を実行し続け、画面を強調表示したままにし、キーボード ライトも明るいままにします

ps: 部分的なウェイクロックを使用している場合 (PARTIAL_WAKE_LOCK フラグを使用)、 CPUは引き続き動作しますが、 電源ボタンを押してもタイマーは無視されます。他のウェイクロックのケースでは、CPU は引き続き実行されますが、ユーザーは引き続き実行されます。 ただし、電源ボタンを押してデバイスをスリープ状態にすることができます。あるいは、3 つ以上のマーカーを使用することもできますが、それらは画面の動作にのみ影響します。 PARTIAL_WAKE_LOCKと併用しても効果はありません。

画面ロック解除パラメータ:

ACQUIRE_CAUSES_WAKEUP: 通常のウェイクロックでは、実際には照明がオンになりません。代わりに、一度開くと常に残ります。 (ユーザーの来世での活動など) を維持します。 wakelock が取得されると、このフラグにより​​画面やキーボードがすぐにオンになります。

典型的な使用法は、ユーザーにとって重要な通知をすぐに確認することです。

ON_AFTER_RELEASE: このフラグが設定されている場合、ウェイクロックが解放されるとユーザー アクティビティ タイマーがリセットされ、ライトが点灯します。 一定期間継続します。 wacklock 状態でループする場合、これを使用してちらつきを減らすことができます


4. 必要な権限


電源操作を実行するには、アプリが電源管理を設定する権限を持っていることを AndroidManifest.xml で宣言する必要があります:

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

以下も必要になる場合があります:

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

さらに、WakeLock の設定は、アプリケーション アプリケーション全体ではなく、アクティビティ レベル で行われます。


このセクションの概要:

さて、このセクションでは PowerManager (電力サービス) を紹介しますが、これは単なる一般的な科学であり、その内容についても言及しています やむを得ない場合はこのクラスを使用しないでください。理解できるかどうかは関係ありません。とにかく知ってください。