앱 최대 절전 모드

평균적인 Android 사용자는 자신의 기기에 50개 이상의 앱을 설치합니다(기기의 RAM 계층이 증가할수록 그 수는 증가합니다). 그러나 이러한 앱 중 상당수는 사용자가 장기간 사용하지 않습니다.

앱 최대 절전 모드는 권한 자동 취소와 유사하게 사용자가 몇 달 동안 사용하지 않는 앱을 ​​최대 절전 모드로 전환합니다. 이렇게 하면 앱이 강제로 중지되고 성능보다는 스토리지에 최적화된 상태가 됩니다. 권한 자동 취소 도 이 상태와 함께 제공되며 설정에서 동일한 면제 설정을 공유 합니다 . 강제 중지된 앱은 백그라운드에서 작업이나 경고를 실행하지 않으며 푸시 알림을 보낼 수 없습니다. 사용자가 앱을 다시 사용하면 앱이 최대 절전 모드를 종료하고 작업/경고/알림이 평소와 같이 다시 실행됩니다. 앱이 최대 절전 모드로 전환되기 전에 예약된 모든 작업/경고/알림은 다시 예약해야 합니다.

플랫폼을 수정하는 OEM은 앱 최대 절전 모드 구현과 충돌할 수 있습니다. 예를 들어

  • 앱 사용 정의를 수정하거나 AOSP에 없는 앱을 깨우는 방법을 도입하면 앱 최대 절전 모드의 정확도가 중단될 수 있습니다.
  • 앱 최대 절전 모드와 유사한 OEM의 독점 제한 메커니즘은 유사한 목적을 수행할 수 있습니다. 둘 다 존재할 수 있지만 일부 중복이 있을 수 있습니다.

CDD는 기존 3.5.1 요구 사항과 유사하게 앱 사용을 기반으로 하는 변경에 대한 새로운 요구 사항 집합을 간략하게 설명합니다. 앱 최대 절전 모드는 다음 요구 사항을 따릅니다.

프레임워크 코드는 다음 위치에 있습니다.

정책 논리는 다음 위치에 있습니다.

  • 저장소: 플랫폼/패키지/모듈/권한
  • 디렉토리: PermissionController/src/com/android/permissioncontroller/최대 절전 모드

고급 아키텍처

App Hibernation 시스템 서비스는 저장을 위해 사용자가 자주 사용하지 않는 앱을 ​​최적화하고 이러한 앱이 백그라운드에서 실행되는 것을 방지합니다. 이러한 결과를 얻기 위해 앱을 최대 절전 모드로 전환할 때 구체적으로 다음을 수행합니다.

  • 권한 자동 취소
  • 앱 강제 종료
  • ODEX 및 VDEX 파일 삭제
  • 앱 캐시 삭제

우리의 목표는 최대 절전 모드를 되돌릴 수 있는 작업으로 구현하여 앱 데이터가 손상되지 않은 상태에서 Launcher 및 기타 표면을 통해 사용자가 앱을 계속 사용할 수 있도록 하는 것입니다. 앱을 실행하면 강제 중지 상태에서 다시 복원하고 평소와 같이 ODEX 및 VDEX 파일 생성을 계속합니다.

계획된 디자인은 두 가지 주요 부분을 중심으로 이루어집니다.

  • 패키지가 최대 절전 모드로 전환되어야 하는 시점 결정
  • 최대 절전 모드 패키지 최적화

PermissionController 의 새로운 시스템 서비스인 AppHibernationService 및 작업 서비스인 AppHibernationJobService, 는 전체 의사 결정 및 논리를 제어하는 ​​접착제입니다.

패키지가 최대 절전 모드로 전환되어야 하는 시기를 결정하는 것은 주로 AppHibernationJobService 에 의해 구동되고 PermissionControllerUsageStatsService 에 의해 관리됩니다. 이 정책 논리는 Mainline을 통해 동적으로 업데이트할 수 있도록 PermissionController 에 있습니다. 또한 패키지 구성 요소(예: 서비스, 콘텐츠 제공자)의 사용을 UsageStatsService 의 새 메트릭으로 캡처하기 위해 새로운 신호인 구성 요소 사용량을 추가할 계획입니다.

패키지 최적화는 모든 실제 절감/최적화가 일어나는 곳입니다. AppHibernationService 는 시스템의 다양한 부분과 통신하여 패키지를 중지하고, 캐시 데이터를 삭제하고, ART 아티팩트를 삭제하는 등의 작업을 수행합니다. 권한 취소는 AppHibernationJobService 에서 직접 시작되어 Android 11 이하 기기에서 자동 취소 기능을 유지합니다.

사용자 경험

사용자에게는 최대 절전 모드로 전환할 수 있는 앱에 대한 정보와 제어가 모두 제공됩니다.

자동 취소와 유사하게 사용자는 최대 절전 모드에 있는 앱에 대한 알림을 받고 알림에서 직접 설정으로 이동하여 앱을 열고 최대 절전 모드에서 해제하거나 필요한 경우 사용하지 않는 앱을 ​​삭제할 수 있습니다.

우리는 기존 권한 자동 취소 면제 의도를 통해 사용자에게 최대 절전 모드 면제를 요청하려는 개발자의 의도를 계속 지원합니다.

하위 호환성

최대 절전 모드 관련 기능은 Android 12부터 사용할 수 있습니다. 이러한 기능은 플랫폼 구성 요소(예: 새 시스템 서비스)가 없기 때문에 이전 버전에서는 작동하지 않았습니다. 자동 취소는 이전 OS 버전에 대해 현재 구현된 대로 계속 작동합니다.

Android 12부터 이전 버전과의 호환성을 보장하기 위해 설정앱 및 알림 아래 앱 페이지에 최대 절전 모드 토글이 추가되고 권한 하위 메뉴에는 원래 자동 취소 토글이 유지됩니다. 이 토글은 앱에 대한 전체 앱 최대 절전 모드 시스템 예외를 제어합니다.

커스터마이징

일부 구현은 모듈식 시스템 구성 요소의 일부이므로 파트너는 기능을 수정하지 않는 것이 좋습니다. 파트너는 CDD 요구 사항을 준수하는 한 유사한 기능을 대신 구현할 수 있습니다.

앱 최대 절전 모드는 Android 11 이상을 대상으로 하는 모든 앱에 대해 기본적으로 ON으로 설정되어야 합니다. 권한 자동 취소와 동일합니다. 설정 자체가 ON일 수 있지만 앱 최대 절전 모드 구현은 Android 11을 대상으로 하는 앱과 Android 12를 대상으로 하는 앱 간에 다를 수 있습니다. 보다 구체적으로 말하면 앱 최대 절전은 Android 11을 대상으로 하는 앱에서만 작동하지만 본질적으로 Android 12를 대상으로 하는 앱에서는 자동 취소입니다.

또한 OEM은 유사한 기능을 구현하고 있을 수 있습니다. 그러나 이러한 기능은 OEM 전용일 수 있는 배터리 최적화를 위해 훨씬 더 짧은 시간 척도를 대상으로 합니다. OEM이 개발한 유사한 앱 제한 기능은 CDD 에 정의된 기존 기준을 충족하는 한 앱 최대 절전 모드 시스템과 공존할 수 있습니다.

테스트

앱 최대 절전 모드에는 올바르게 작동하는지 확인하기 위한 CTS 및 단위 테스트가 있습니다.