ADB로 App Standby Bucket 확인하기

안드로이드 9부터는 App Standby Bucket이라는 전원 관리 기능이 추가되었다.
(https://developer.android.com/about/versions/pie/power)

App Standby Bucket이란 안드로이드 시스템이 앱을 처리하는 우선순위를 아래와 같이 크게 다섯 가지로 분류하는 기능이다.

  • Active
  • Working set
  • Frequent
  • Rare
  • Never

사용자가 앱을 얼마나 자주 사용하는지에 따라 각 버킷으로 이동하게 되며 정확한 기준은 (어뷰징을 생각한다면 당연히) 알려져있지 않다.

한 가지 주의할 부분은 앱이 어느 버킷에 있느냐에 따라 FCM 수신 시의 동작이 달라진다는 점이다.
보통 도즈 모드에 진입 시 우선순위가 high로 지정된 FCM을 받으면 앱이 깨어나는 것으로 알려져있으나, 앱이 어느 버킷에 있느냐에 따라 하루에 받을 수 있는 high priority FCM 개수가 달라지게 된다.

  • Active: 제한 없음
  • Working set: 제한 없음
  • Frequent: 하루 10개
  • Rare: 하루 5개

(https://developer.android.com/topic/performance/power/power-details.html)

그러나 FCM으로 인해 사용자와 상호작용이 발생하는 경우(Notification 등)는 쿼터를 소모하지 않는다.
(https://firebase.google.com/docs/cloud-messaging/concept-options?hl=en#setting-the-priority-of-a-message)

ADB로 테스트하기

아래와 같은 ADB 명령으로 버킷을 지정하거나 현재 어느 버킷에 있는지를 읽어올 수 있다.
(https://developer.android.com/about/versions/pie/power#adb-commands)

$ 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]

숫자의 의미

get-standby-bucket을 실행하면 Active, Working set 이런 식으로 나오는게 아니고 숫자만 하나 띡 나오고 끝난다.
숫자들의 의미는 다음과 같다.

  • 10: Active
  • 20: Working set
  • 30: Frequent
  • 40: Rare

공식 문서에는 여기까지만 나와있지만 두 가지가 더 있다.

  • 5: Exempted
    • 화이트리스트에 추가되어 전원 관리의 영향을 받지 않음
  • 50: Never
    • 사용자가 한 번도 사용한 적이 없음

(http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/android/app/usage/UsageStatsManager.java#103)

Leave a Comment

Your email address will not be published. Required fields are marked *