PowerManager(전원 서비스)


이 섹션 소개:

이 섹션에서는 Android에서 제공하는 시스템 서비스인 PowerManager(전원 서비스)에 대해 설명합니다. CPU가 실행되고 키보드나 화면이 켜지도록 관리하십시오. 그러나 꼭 필요한 경우가 아니면 이 클래스를 사용하지 마십시오. 사용 후에는 반드시 제때에 풀어주세요! 이 섹션에서는 이 B에 대해 너무 깊이 설명하지 않습니다. 앞으로 심도 깊게 공부해야 할 것들~ 이번 섹션에서는 주로 PowerManager, wakelock 등 몇 가지 기본 개념을 소개합니다. 잠금 장치 등!

공식 API 문서: PowerManager


1. PowerManager란 무엇입니까


Android 시스템에서 제공하는 전원 관리용 API와 관련된 인터페이스는 기기의 배터리 수명과 밀접한 관련이 있습니다. 꼭 필요한 경우가 아니면 이 클래스의 사용을 피하고 사용 후 제때에 해제해야 한다고 관계자도 말했습니다.

소위 전원 관리에는 CPU 실행, 키보드 또는 화면 조명이 포함됩니다! wakelock 잠금 메커니즘은 이 잠금 장치를 잡고 있는 한 그러면 시스템은 절전 상태로 들어갈 수 없으며 사용자 모드 프로그램이나 커널을 통해 얻을 수 있습니다! 잠금은 "with timeout" 또는 "No timeout", 시간이 만료된 후 자동으로 시간 초과 잠금이 해제됩니다. 잠금 또는 시간 초과가 없으면 커널은 절전 메커니즘을 시작하여 절전 모드로 들어갑니다!


2. Wakelock 잠금 소개


PowerManager.WakeLock lockedunlocked가 있으며 잠금에는 두 가지 형태가 있습니다.

영구적으로 잠긴 이런 종류의 잠금은 명시적으로 해제되지 않는 한 잠금이 해제되지 않으므로 잠금을 해제해야 합니다. 주의해서 사용하세요!

Timeout lock은 시간이 지나면 잠금이 해제됩니다. WakeLock을 생성한 후에는 두 가지 잠금 메커니즘이 있습니다. ①uncounting 잠금 메커니즘, ②counting 잠금 메커니즘(기본값)을 전달할 수 있음 setReferenceCounted (boolean) 값)을 지정하면 차이점은 다음과 같습니다. 전자의 경우, 몇 번이나 acquire( )를 수행하더라도 한 번의 release( )으로 잠금을 해제할 수 있습니다. 후자에는 (--count == 0)이 필요하며 (count == 0)인 경우에도 잠금이 적용됩니다. 따라서 WakeLock의 계산 메커니즘은 진정한 의미에서 각 요청에 대해 잠금을 적용/해제하지 않습니다. 동일한 잠금이 적용/해제된 횟수를 세어보고 진행하세요!

ps: 좀 더 심층적인 내용은 작가의 수준이 제한되어 있고 저는 아직 그 수준에 도달하지 못했습니다. 여기서는 자세히 다루지 않고 기본적인 내용만 이야기하겠습니다~


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 ( ) 표시 , 이 표시는 다양한 정도로 시스템 전원에 영향을 미칩니다

.

이 태그는 독점적이며 한 번에 하나만 지정할 수 있습니다.

PARTIAL_WAKE_LOCK: CPU를 계속 실행하면 화면과 키보드 조명이 꺼질 수 있습니다.

SCREEN_DIM_WAKE_LOCK: CPU 실행 유지, 화면 표시 유지 허용, 회색일 수 있음, 키보드 조명 끄기 허용

SCREEN_BRIGHT_WAKE_LOCK: CPU 실행 유지, 화면 강조 표시 유지 허용, 회전 허용 키보드 표시등 끄기

FULL_WAKE_LOCK : CPU를 계속 실행하고 화면을 강조 표시하며 키보드 표시등도 밝게 유지됩니다

ps: 부분적인 wake lock을 사용하는 경우(PARTIAL_WAKE_LOCK 플래그 사용) CPU는 계속해서 실행됩니다. 전원 버튼을 눌러도 모든 타이머는 무시됩니다. 다른 wake lock 경우에는 CPU가 계속 실행되지만 사용자는 계속 실행됩니다. 그러나 전원 버튼을 눌러 장치를 절전 모드로 전환할 수 있습니다. 또는 두 개 이상의 마커를 사용할 수 있지만 이는 화면 동작에만 영향을 미칩니다. PARTIAL_WAKE_LOCK과 함께 사용하면 효과가 없습니다.

화면 잠금 해제 매개변수:

ACQUIRE_CAUSES_WAKEUP: 일반적인 wake lock은 실제로 조명을 켜지 않습니다. 대신, 일단 열리면 항상 남아 있습니다. 유지(다음 생에서의 사용자 활동 등). wakelock이 획득되면 이 플래그로 인해 화면 및/또는 키보드가 즉시 켜집니다.

일반적인 용도는 사용자에게 중요한 알림을 즉시 확인하는 것입니다.

ON_AFTER_RELEASE: 이 플래그가 설정되면 wakelock이 해제될 때 사용자 활동 타이머가 재설정되어 조명이 켜집니다. 한동안 지속됩니다. Wacklock 조건에서 반복하는 경우 깜박임을 줄이는 데 사용할 수 있습니다.


4. 필수 권한


전원 작업을 수행하려면 AndroidManifest.xml에서 앱에 전원 관리 설정 권한이 있음을 선언해야 합니다.

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

다음이 필요할 수도 있습니다:

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

또한 WakeLock의 설정은 전체 애플리케이션 애플리케이션이 아닌 활동 수준에 있습니다!


이 섹션 요약:

좋아, 이 섹션에서는 PowerManager(전원 서비스)를 소개하지만 이는 단지 대중적인 과학일 뿐이며 내용도 언급됩니다. 꼭 필요한 경우가 아니면 이 수업을 사용하지 마세요~ 이해하든 말든 상관없이 그냥 알아두세요!