배터리 소모를 방지하기 위해 유휴 상태인 Android 기기는 빠르게 떨어집니다. 있습니다. 그러나 애플리케이션이 대기 모드를 해제해야 할 때가 있습니다. 또는 CPU를 사용하고 절전모드를 해제 상태로 유지하여 작업을 완료합니다.
취할 수 있는 접근 방식은 앱의 요구사항에 따라 다릅니다. 하지만 일반적인 규칙은 경험 중 하나는 가장 가벼운 접근방법을 사용하는 것이 앱의 시스템 리소스에 미치는 영향을 최소화해야 합니다. 다음 섹션 기기의 기본 절전 동작이 다음과 같은 경우를 처리하는 방법 설명 앱 요구사항과 호환되지 않을 수 있습니다
wake lock 사용의 대안
앱에 wake lock 지원을 추가하기 전에 앱이 케이스는 다음 대체 솔루션 중 하나를 지원합니다.
앱이 장시간 HTTP 다운로드를 실행하는 경우
DownloadManager
앱이 외부 서버의 데이터를 동기화하는 경우 동기화 어댑터를 사용합니다.
앱이 백그라운드 서비스를 사용한다면 JobScheduler 또는 Firebase 클라우드 메시징 특정 간격으로 이러한 서비스를 트리거할 수 있습니다
호환 기기가 실행될 때마다 호환 앱을 계속 실행해야 하는 경우 호환 기기 관리도구를 사용합니다.
화면을 켜진 상태로 유지
게임이나 영화 앱 같은 특정 앱은 화면이 켜진 상태를 유지해야 합니다. 이
이를 위한 가장 좋은 방법은
FLAG_KEEP_SCREEN_ON
드림
내 활동에서 (활동에서만, 서비스나 다른 앱에서는 절대 안 됨)
구성요소). 예를 들면 다음과 같습니다.
Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
자바
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } }
이 접근 방식의 장점은 Keep CPU On)를 사용하는 경우 특별한 권한이 필요하지 않으며 앱에서 별도의 작업 없이도 사용자가 애플리케이션 간에 이동하는 방식을 올바르게 관리합니다. 걱정할 필요가 없습니다
이를 구현하는 또 다른 방법은 애플리케이션의 레이아웃 XML 파일에서
android:keepScreenOn
속성
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
android:keepScreenOn="true"
를 사용하는 것은
FLAG_KEEP_SCREEN_ON
어느 방법이든 앱에 가장 적합한 접근 방식을 사용할 수 있습니다. 설정의 장점은
가장 큰 이유는
나중에 프로그래매틱 방식으로 플래그를 삭제하여 화면이 켜지도록 함
사용 중지됩니다.
TV 대기 모드
TV에서
FLAG_KEEP_SCREEN_ON
드림
장치가 네트워크 내부로 들어가는 것을 막기 위해
앰비언트 모드
광고가 표시될 수 있습니다. FLAG_KEEP_SCREEN_ON
설정이 설정되지 않은 경우
기기가 자동으로 대기 모드로 전환됩니다.
일정 시간 동안 사용하지 않은 경우.
CPU가 켜진 상태를 유지
CPU를 실행 상태로 유지하여 작업을 완료하기 전에
절전 모드로 전환되면
PowerManager
시스템 서비스 기능
wake lock이라고 합니다. wake lock을 사용하면 애플리케이션이 전원 상태를 제어할 수 있습니다.
호스트 기기의 인스턴스입니다
wake lock을 생성하고 유지하는 것은 호스트 기기의
배터리 수명을 연장할 수 있습니다. 따라서 wake lock은 꼭 필요할 때만 사용해야 하며
가능한 한 짧게 유지합니다. 예를 들어
활동에서 wake lock 사용 위에 설명된 대로
화면을 켜려면
FLAG_KEEP_SCREEN_ON
wake lock을 사용하는 한 가지 적법한 사례는 화면이 켜져 있는 동안 CPU가 계속 작업하도록 하려면 wake lock을 획득해야 합니다. 사용 중지됩니다. 하지만 다시 말씀드리지만, 이 관행은 전체 데이터에 영향을 주므로 최소화해야 합니다. 배터리 수명을 연장할 수 있습니다.
wake lock을 사용하려면 먼저
다음 작업에 대한 WAKE_LOCK
권한
애플리케이션의 매니페스트 파일에 있습니다.
<uses-permission android:name="android.permission.WAKE_LOCK" />
앱에 서비스를 사용하여 작업을 실행하는 broadcast receiver가 포함된 경우 다음은 wake lock을 직접 설정하는 방법입니다.
Kotlin
val wakeLock: PowerManager.WakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply { acquire() } }
자바
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag"); wakeLock.acquire();
wake lock을 해제하려면 다음을 호출합니다.
wakelock.release()
이렇게 하면 CPU에 대한 소유권이 취소됩니다. 절전 모드를 해제하는 것은 매우 중요하므로
배터리 소모를 방지하세요.