전원 관리

Android 9(API 레벨 28)에서는 기기 전원 관리를 개선하기 위한 새로운 기능이 도입됩니다. 이러한 이전 버전에 이미 있는 기능과 더불어 가장 필요한 앱에 시스템 리소스가 할당되도록 할 수 있습니다.

전원 관리 기능은 다음과 같은 두 가지 범주로 구분됩니다.

앱 대기 버킷
시스템에서 앱의 사용을 제한합니다. 기기 리소스에 액세스할 수 있는 권한을 사용자의 사용 패턴에 따라 자동으로 결정됩니다. 이것은 Android 9.
절전 모드 개선
절전 모드가 사용 설정되면 시스템이 모든 앱에 제한을 적용합니다. 이 기능은 Android 9에서 개선되었습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

앱 대기 버킷

Android 9에서는 앱 대기 버킷이라는 새로운 배터리 관리 기능을 소개합니다. 앱 대기 버킷을 사용하면 시스템이 앱의 우선순위를 지정할 수 있습니다. 리소스 기반 요청을 앱이 얼마나 최근에 얼마나 자주 사용되었는지에 관한 정보를 수집합니다. 앱 사용 기반 각 앱은 5개의 우선순위 버킷 중 하나에 배치됩니다. 시스템 앱이 어느 버킷에 있는지에 따라 각 앱에서 사용할 수 있는 기기 리소스를 제한합니다. 이(가) 있는 경우

5개의 버킷은 다음과 같은 특성에 따라 앱에 우선순위 그룹을 지정합니다.

사용 중

사용자가 현재 앱을 사용 중인 경우 앱은 활성 버킷에 있으며, 예:

  • 앱에서 활동을 실행했습니다.
  • 앱에서 포그라운드 서비스를 실행 중입니다.
  • 앱에 의해 사용되는 콘텐츠 제공자와 연결된 동기화 어댑터가 포그라운드 앱
  • 사용자가 앱에서 보낸 알림을 클릭합니다.

앱이 활성 버킷에 있으면 시스템은 앱의 작업, 알람, FCM 메시지 등의 정보를 수신할 수 있습니다.

작업 세트

자주 실행되지만 현재 실행되지 않는 경우 앱은 작업 세트 버킷에 있습니다. 활성화됨. 예를 들어 사용자가 거의 매일 실행하는 소셜 미디어 앱은 작업 세트에 있을 가능성이 높습니다. 또한 앱이 작업 세트로 승격됨 버킷이 될 수 있습니다

앱이 작업 세트에 있다면 시스템은 앱의 작업 실행 및 알람 트리거 기능에 가벼운 제한을 적용합니다. 자세한 내용은 전력 관리 제한사항.

자주 사용

정기적으로 사용되나 반드시 사용되지 않는 경우 앱은 자주 사용 버킷에 있습니다. 있습니다. 예를 들어 사용자가 헬스장에서 실행하는 운동 추적 앱은 자주 사용 버킷에 있을 수 있습니다.

앱이 자주 사용 버킷에 있다면 시스템은 작업을 실행하고 알람을 트리거하는 기능이 있으며 높은 우선순위의 FCM 메시지를 보냅니다. 자세한 내용은 전력 관리 제한사항.

드물게 사용

앱이 자주 사용되지 않으면 Rare 버킷에 배치됩니다. 예를 들어 호텔 앱이 사용자가 호텔에 머무는 동안만 달릴 수 있지만 버킷과 동기화할 수 있습니다

앱이 드물게 사용 버킷에 있다면 시스템은 작업을 실행하고 알람을 트리거하고 우선순위가 높은 FCM 메시지를 수신할 수 있는 기능이 추가되었습니다. 시스템은 앱의 인터넷 연결 기능도 제한합니다. 대상 자세한 내용은 전력 관리 제한사항을 참고하세요.

사용 안함

설치되었지만 한 번도 실행되지 않은 앱은 Never 버킷에 할당됩니다. 시스템은 이러한 앱에 매우 엄격한 제한을 적용합니다.

시스템은 각 앱을 우선순위 버킷에 동적으로 할당하고 실행할 수 있습니다 시스템은 기계를 사용하는 사전 로드된 앱에 의존할 수 있으며, 각 모델이 얼마나 가능성 높은지 앱을 사용하고 적절한 버킷에 앱을 할당합니다. 시스템에서 앱이 기기에 없으면 시스템은 기본적으로 얼마나 최근에 사용되었는지 확인할 수 있습니다 더 활성 상태인 앱은 앱에 더 높은 우선순위를 부여하여 앱에서 사용할 수 있는 시스템 리소스가 늘어납니다. 특히 버킷이 앱의 작업 실행 빈도, 앱이 트리거할 수 있는 빈도를 결정합니다. 앱이 높은 우선순위 Firebase Cloud를 수신할 수 있는 빈도 메시지(FCM) 메시지 이러한 제한사항은 기기가 배터리 전원을 사용하는 동안에만 적용됩니다. 시스템 은 기기가 충전되는 동안 앱에 이러한 제한을 적용하지 않습니다.

모든 제조업체는 비활성 앱의 상태에 관한 자체 기준을 설정할 수 있습니다. 버킷에 할당됩니다 앱이 어느 버킷에 있는지에 영향을 주려고 해서는 안 되며 있습니다. 대신 어떤 환경에서도 앱이 잘 동작하도록 하는 데 집중하세요. 버킷이 있을 수 있습니다 앱이 현재 어떤 버킷에 있는지 확인할 수 있도록 새 메서드 호출 UsageStatsManager.getAppStandbyBucket()

권장사항

앱이 이미 잠자기 및 앱 대기 새로운 전원 관리 기능을 다루는 것이 어렵지 않을 것입니다. 하지만 이전에는 잘 작동했던 일부 앱 동작이 이제는 문제를 일으킬 수 있습니다.

  • 앱을 하나의 버킷에 넣기 위해 시스템을 조작하려고 해서는 안 됩니다. 있습니다. 시스템의 버케팅 방법은 변경될 수 있으며 모든 장치는 제조업체는 자체 버킷 지정 앱을 알고리즘입니다. 그보다는 어느 버킷에 있든 앱이 적절히 동작하는지 확인하세요.
  • 앱에 런처 활동이 없으면 사용할 수 있습니다 앱의 가장 큰 장점이 많아지도록 있습니다.
  • 앱의 알림을 실행할 수 없는 경우 사용자가 알림을 트리거할 수 없습니다. 활성 버킷으로 승격할 수 있습니다. 포함 이 경우 적절한 알림을 다시 디자인하여 확인할 수 있습니다 가이드라인은 Material Design 알림 디자인 패턴을 따라야 합니다.
  • 마찬가지로 앱에서 높은 우선순위의 FCM 메시지를 보내면 사용자가 앱과 상호작용할 기회를 제공하지 못하므로 확인할 수 있습니다 사실 높은 우선순위의 FCM 메시지의 유일한 용도는 사용자에게 알림을 푸시하므로 이러한 상황이 발생해서는 안 됩니다. 만약 트리거되지 않을 때 FCM 메시지를 높은 우선순위로 부적절하게 표시 다른 부정적인 결과를 초래할 수 있습니다. 예를 들어 앱의 할당량이 소진되어 일반적인 우선순위로 처리할 FCM 메시지입니다.

    참고: 사용자가 알림을 반복적으로 닫으면 시스템은 향후 해당 알림을 차단할 수 있는 옵션을 사용자에게 제공합니다. 앱을 활성 버킷입니다.

  • 앱이 여러 패키지로 분할된 경우 이러한 패키지는 버킷이 다르고 액세스 수준도 다릅니다 다음 작업을 수행해야 합니다. 다양한 버킷에 할당된 패키지로 이러한 앱을 테스트하여 앱이 제대로 동작합니다.

절전 모드 개선

Android 9에서는 배터리 세이버 모드가 여러 가지로 개선되었습니다. 기기 제조업체는 적용되는 정확한 제한사항을 결정합니다. 예를 들어 AOSP 빌드에서는 시스템이 다음 제한사항을 적용합니다.

  • 시스템은 앱을 앱 대기 모드로 전환하는 대신 더 적극적으로 대기하는 시간도 발생할 수 있습니다.
  • 백그라운드 실행 제한은 대상 API와 관계없이 모든 앱에 적용됩니다. 있습니다.
  • 화면이 꺼져 있으면 위치 서비스가 사용 중지될 수 있습니다.
  • 백그라운드 앱에는 네트워크 액세스 권한이 없습니다.

또한, 다른 기기별 전원 최적화 기능들이 있습니다. 완전형 전원 관리를 설명하는 페이지를 참조하세요. 제한사항을 따릅니다.

절전 모드가 작동 중일 때 앱을 테스트하는 것이 좋습니다. 나 기기의 설정 > 배터리 절전 모드 화면

테스트 및 문제 해결

새로운 전원 관리 기능은 Android 9 기기에서 실행되는 모든 앱에 영향을 미칩니다. 앱이 Android 9을 타겟팅하지 않을 수 있습니다 앱이 올바르게 동작하는지 확인하고 제대로 작동시킬 수 있습니다.

다양한 조건에서 앱의 주요 사용 사례를 테스트하여 서로 상호 작용하는 방법을 배웠습니다. Android 디버그 브리지 명령어를 사용해 기능을 사용 또는 사용 중지합니다.

Android 디버그 브리지 명령어

Android 디버그 브리지 셸 명령어를 사용할 수 있습니다. 몇 가지 전원 관리 기능을 테스트할 수 있습니다.

ADB를 사용하여 기기를 잠자기 모드로 전환하는 방법은 다음을 참조하세요. 잠자기 및 앱 대기 모드로 테스트.

앱 대기 버킷

ADB를 사용하여 앱 대기 버킷에 앱을 수동으로 할당할 수 있습니다. 앱의 버킷을 변경하려면 다음 명령어를 사용합니다.

$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare

또한 이 명령을 사용하여 여러 패키지를 동시에 설정할 수 있습니다.

$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...

앱이 어떤 버킷에 있는지 확인하려면 다음을 실행하세요.

$ adb shell am get-standby-bucket [packagename]

packagename 매개변수를 전달하지 않으면 모든 앱의 버킷이 나열됩니다. 앱은 또한 다음을 호출하여 런타임에 버킷을 찾을 수 있습니다. 새 메서드 UsageStatsManager.getAppStandbyBucket()

절전 모드

저전력 조건 하에서 앱이 어떻게 동작하는지 테스트하기 위한 여러 명령어가 있습니다.

기기의 플러그를 뽑고 시뮬레이션하려면, 다음 명령을 사용하세요.

$ adb shell dumpsys battery unplug

저전력 조건 하에서 기기가 어떻게 동작하는지 테스트하려면, 이 명령을 사용하세요.

$ adb shell settings put global low_power 1

테스트를 마친 후 수동 기기 설정을 실행취소할 수 있습니다. 다음 명령어를 사용합니다.

$ adb shell dumpsys battery reset