동작 변경사항: 모든 앱

Android 16 플랫폼에는 앱에 영향을 줄 수 있는 동작 변경사항이 있습니다. targetSdkVersion과 관계없이 Android 16에서 실행되는 모든 앱에 적용되는 동작 변경사항은 다음과 같습니다. 이러한 변경사항을 적절히 지원해야 하는 경우 앱을 테스트한 후 필요에 따라 수정해야 합니다.

또한 Android 16을 타겟팅하는 앱에만 영향을 주는 동작 변경사항 목록을 검토해야 합니다.

핵심 기능

Android 16에는 Android 시스템의 다양한 핵심 기능을 수정하거나 확장하는 다음과 같은 변경사항이 포함되어 있습니다.

JobScheduler 할당량 최적화

Android 16부터 다음 요소를 기반으로 일반 및 신속한 작업 실행 런타임 할당량이 조정됩니다.

  • 애플리케이션이 있는 앱 대기 버킷: Android 16에서는 활성 대기 버킷이 넉넉한 런타임 할당량으로 시행되기 시작합니다.
  • 앱이 최상위 상태에 있는 동안 작업 실행이 시작되는 경우: Android 16에서는 앱이 사용자에게 표시되는 동안 시작된 작업이 앱이 표시되지 않게 된 후에도 계속되면 작업 런타임 할당량을 준수합니다.
  • 포그라운드 서비스를 실행하는 동안 작업이 실행되는 경우: Android 16에서는 포그라운드 서비스와 동시에 실행되는 작업이 작업 런타임 할당량을 준수합니다. 사용자가 시작한 데이터 전송에 작업을 활용하는 경우 대신 사용자가 시작한 데이터 전송 작업을 사용하는 것이 좋습니다.

이 변경사항은 WorkManager, JobScheduler, DownloadManager를 사용하여 예약된 작업에 영향을 미칩니다. 작업이 중지된 이유를 디버그하려면 WorkInfo.getStopReason()를 호출하여 작업이 중지된 이유를 로깅하는 것이 좋습니다 (JobScheduler 작업의 경우 JobParameters.getStopReason() 호출).

배터리 최적화 권장사항에 관한 자세한 내용은 작업 예약 API의 배터리 사용량 최적화 가이드를 참고하세요.

또한 Android 16에서 도입된 새로운 JobScheduler#getPendingJobReasonsHistory API를 활용하여 작업이 실행되지 않은 이유를 파악하는 것이 좋습니다.

테스트

앱의 동작을 테스트하려면 앱이 Android 16 기기에서 실행되는 한 특정 작업 할당량 최적화 재정의를 사용 설정할 수 있습니다.

'최상위 상태가 작업 런타임 할당량을 준수합니다'의 시행을 사용 중지하려면 다음 adb 명령어를 실행합니다.

adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_TOP_STARTED_JOBS APP_PACKAGE_NAME

'포그라운드 서비스와 동시에 실행되는 작업은 작업 런타임 할당량을 준수합니다'의 시행을 사용 중지하려면 다음 adb 명령어를 실행합니다.

adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_FGS_JOBS APP_PACKAGE_NAME

특정 앱 대기 버킷 동작을 테스트하려면 다음 adb 명령어를 사용하여 앱의 앱 대기 버킷을 설정하면 됩니다.

adb shell am set-standby-bucket APP_PACKAGE_NAME active|working_set|frequent|rare|restricted

앱이 있는 앱 대기 버킷을 알아보려면 다음 adb 명령어를 사용하여 앱의 앱 대기 버킷을 가져오면 됩니다.

adb shell am get-standby-bucket APP_PACKAGE_NAME

JobInfo#setImportantWhileForeground를 완전히 지원 중단함

The JobInfo.Builder#setImportantWhileForeground(boolean) method indicates the importance of a job while the scheduling app is in the foreground or when temporarily exempted from background restrictions.

This method has been deprecated since Android 12 (API level 31). Starting in Android 16, it no longer functions effectively and calling this method will be ignored.

This removal of functionality also applies to JobInfo#isImportantWhileForeground(). Starting in Android 16, if the method is called, the method returns false.

순서가 지정된 브로드캐스트 우선순위 범위가 더 이상 전역이 아님

Android apps are allowed to define priorities on broadcast receivers to control the order in which the receivers receive and process the broadcast. For manifest-declared receivers, apps can use the android:priority attribute to define the priority and for context-registered receivers, apps can use the IntentFilter#setPriority() API to define the priority. When a broadcast is sent, the system delivers it to receivers in order of their priority, from highest to lowest.

In Android 16, broadcast delivery order using the android:priority attribute or IntentFilter#setPriority() across different processes will not be guaranteed. Broadcast priorities will only be respected within the same application process rather than across all processes.

Also, broadcast priorities will be automatically confined to the range (SYSTEM_LOW_PRIORITY + 1, SYSTEM_HIGH_PRIORITY - 1). Only system components will be allowed to set SYSTEM_LOW_PRIORITY, SYSTEM_HIGH_PRIORITY as broadcast priority.

Your app might be impacted if it does either of the following:

  1. Your application has declared multiple processes with the same broadcast intent, and has expectations around receiving those intents in a certain order based on the priority.
  2. Your application process interacts with other processes and has expectations around receiving a broadcast intent in a certain order.

If the processes need to coordinate with each other, they should communicate using other coordination channels.

ART 내부 변경사항

Android 16 includes the latest updates to the Android Runtime (ART) that improve the Android Runtime's (ART's) performance and provide support for additional Java features. Through Google Play System updates, these improvements are also available to over a billion devices running Android 12 (API level 31) and higher.

As these changes are released, libraries and app code that rely on internal structures of ART might not work correctly on devices running Android 16, along with earlier Android versions that update the ART module through Google Play system updates.

Relying on internal structures (such as non-SDK interfaces) can always lead to compatibility problems, but it's particularly important to avoid relying on code (or libraries containing code) that leverages internal ART structures, since ART changes aren't tied to the platform version the device is running on and they go out to over a billion devices through Google Play system updates.

All developers should check whether their app is impacted by testing their apps thoroughly on Android 16. In addition, check the known issues to see if your app depends on any libraries that we've identified that rely on internal ART structures. If you do have app code or library dependencies that are affected, seek public API alternatives whenever possible and request public APIs for new use cases by creating a feature request in our issue tracker.

사용자 환경 및 시스템 UI

Android 16에는 더 일관되고 직관적인 사용자 환경을 제공하기 위한 다음과 같은 변경사항이 포함되어 있습니다.

방해가 되는 접근성 안내 지원 중단

Android 16 deprecates accessibility announcements, characterized by the use of announceForAccessibility or the dispatch of TYPE_ANNOUNCEMENT accessibility events. These can create inconsistent user experiences for users of TalkBack and Android's screen reader, and alternatives better serve a broader range of user needs across a variety of Android's assistive technologies.

Examples of alternatives:

The reference documentation for the deprecated announceForAccessibility API includes more details about suggested alternatives.

3버튼 탐색 지원

Android 16 brings predictive back support to the 3-button navigation for apps that have properly migrated to predictive back. Long-pressing the back button initiates a predictive back animation, giving you a preview of where the back swipe takes you.

This behavior applies across all areas of the system that support predictive back animations, including the system animations (back-to-home, cross-task, and cross-activity).

The predictive back animations in 3-button navigation mode.