Android

안드로이드 12 부터 포그라운드 서비스 시작 제한이 시작됩니다. 대비하세요!! 실시간 처리가 필요한데, WorkManager 쓰라고?

포그라운드 서비스 시작 제한

Android 12를 타겟팅하는 앱은 몇 가지 특수한 사례를 제외하고 백그라운드에서 실행되는 동안 더 이상 포그라운드 서비스를 시작할 수 없습니다. 앱이 백그라운드에서 실행되는 동안 포그라운드 서비스를 시작하려고 하지만 포그라운드 서비스가 예외 사례 중 하나를 충족하지 못하면 시스템에서 IllegalStateException이 발생합니다.

앱이 이 변경사항으로 영향을 받는 경우 WorkManager를 사용하도록 이전하는 것이 좋습니다. Android 12 베타가 출시되면 WorkManager는 우선순위가 높은 백그라운드 작업을 시작하는 데 권장되는 솔루션이 됩니다.

Work Manager 2.7.0-alpha01에서는 Android 12의 새로운 작업 유형인 신속 처리 작업이 지원됩니다. Android 11 이하에서는 이 버전의 WorkManager가 포그라운드 서비스를 사용하여 이전 버전과의 호환성을 제공합니다.

Work Manager 2.7.0-alpha01에서 신속 처리 작업을 사용하는 방법에 관한 전체 예는 GitHub의 WorkManagerSample을 참고하세요.

신속 처리 작업

Android 12에서 새로 도입된 신속 처리 작업을 사용하면 앱이 중요한 작업을 실행하는 동시에 시스템에서는 리소스 액세스를 더 효과적으로 제어할 수 있습니다. 이러한 작업의 특성은 포그라운드 서비스와 JobScheduler 작업 사이에 있습니다.

  • 절전 모드와 잠자기를 비롯한 시스템의 전원 관리 제한사항에 영향을 받지 않습니다.
  • 시스템의 현재 워크로드에서 실행이 가능하다면 시스템은 신속 처리 작업을 즉시 실행합니다.

신속 처리 작업은 지연될 수 있음

시스템은 작업이 호출된 후 최대한 빨리 지정된 신속 처리 작업을 실행하려고 합니다. 그러나 다른 작업 유형과 마찬가지로 시스템은 이미 너무 많은 작업이 실행되고 있거나 시스템 리소스가 부족하면 새 신속 처리 작업의 시작을 지연시킬 수 있습니다.

특히 시스템은 다음 조건 중 하나 이상이 발생하면 신속 처리 작업의 실행을 지연시킵니다.

  • 시스템 로드가 너무 높습니다.
  • 신속 처리 작업 할당량 한도가 초과되었습니다. 신속 처리 작업은 앱 대기 버킷에 기반하는 할당량 시스템을 사용하고 롤링 시간 내에서 최대 실행 시간을 제한합니다. 신속 처리 작업에 사용되는 할당량은 다른 유형의 백그라운드 작업에 사용되는 할당량보다 더 제한됩니다.

WorkManager 업데이트

WorkManager 2.7.0-alpha01부터 앱은 setExpedited()를 호출하여 Worker가 신속 처리되어야 한다고 선언할 수 있습니다. 이 새로운 API는 Android 12에서 실행될 때 신속 처리 작업을 사용하고 API는 이전 버전의 Android에서 포그라운드 서비스를 사용합니다.

개발자가 앱에서 의도적으로 신속 처리 작업을 요청하도록 권장하고 작업 실행 시간을 연장하는 기능을 더 잘 지원하기 위해 CoroutineWorker.setForeground() 및 ListenableWorker.setForegroundAsync() 메서드가 지원 중단됩니다. 특히 Android 12를 실행하는 기기에서는 ListenableWorker.setForegroundAsync()를 호출하려고 하면 IllegalStateException이 발생합니다. 개발자는 대신 setExpedited()를 사용하는 것이 좋습니다.

백그라운드에서 포그라운드 서비스 시작이 허용되는 경우

다음 상황에서는 앱이 백그라운드에서 실행되는 동안에도 포그라운드 서비스를 시작할 수 있습니다.


배터리 최적화를 삭제하면 기기 배터리 수명이 줄어들 수 있다고 사용자에게 경고하는 시스템 대화상자

REFERENCE : Android 12 개발자 프리뷰(https://developer.android.com/about/versions/12/foreground-services)

안드로이드 12 정식 출시되었다.

그에 따른 동작 변경사항은 반드시 확인해서 내 앱에 문제가 발생하는지 여부를 체크할 필요가 있다.

2022년 11월부터는 앱을 마켓에 등록할 때 안드로이드 12를 타겟팅해야 등록가능하다.

Android 11(API 수준 30)에서 Android 12(API 수준 31)로 이전시 확인사항

보안 및 권한

사용자 경험

  • 맞춤 알림: 맞춤 콘텐츠 뷰가 포함된 알림은 더 이상 전체 알림 영역을 사용하지 않습니다. 대신 시스템에서 표준 템플릿을 적용합니다. 이 템플릿은 맞춤 알림이 모든 상태에서 다른 알림과 동일한 장식을 보유하도록 합니다. 이 동작은 Notification.DecoratedCustomViewStyle의 동작과 거의 동일합니다.
  • Android App Links 인증 변경사항: Android App Link 인증을 사용하는 경우 인텐트 필터가 BROWSABLE 카테고리를 포함하고 HTTPS 스키마를 지원하는지 확인하세요.

성능

  • 포그라운드 서비스 실행 제한: Android 12 이상을 타겟팅하려면 앱이 몇 가지 특별한 사례를 제외하고 백그라운드에서 실행되는 동안 포그라운드 서비스를 시작할 수 없습니다. 앱이 백그라운드에서 실행되는 동안 포그라운드 서비스를 시작하려고 하면 예외가 발생합니다(특별한 사례 제외).
  • 앱이 백그라운드에서 실행되는 동안 WorkManager를 사용하여 신속 처리 작업을 예약하고 시작해 보세요. 신속히 처리해야 하는 사용자 요청 작업을 완료하려면 정확한 알람 내에서 포그라운드 서비스를 시작하세요.
  • 알림 트램펄린 제한사항: 사용자가 알림을 탭하면 일부 앱은 사용자가 보고 상호작용할 수 있는 활동을 시작하는 앱 구성요소를 실행하여 응답합니다. 이 앱 구성요소를 알림 트램펄린이라고 합니다.
  • 앱은 알림 트램펄린으로 사용되는 서비스나 broadcast receiver에서 활동을 시작할 수 없습니다. 사용자가 알림 또는 알림의 작업 버튼을 탭하면 앱이 서비스나 broadcast receiver 내부에서 startActivity()를 호출할 수 없습니다.

Android 12(API 수준 31)를 타겟팅하는 앱에 영향을 주는 변경사항을 모두 살펴보세요.

작 변경사항 확인: Android 12를 타겟팅하는 앱

동작 변경사항: Android 12를 타겟팅하는 앱  |  Android Developers

Android 12를 타겟팅하는 앱에 영향을 주는 Android 12의 변경사항을 알아봅니다.

developer.android.com

Leave a Reply

error: Content is protected !!