PendingIntent

PendingIntent란 대기 중인 인텐트라는 뜻으로, 현재 어플리케이션이 살아있는지와 관계없이 특정 시점에 Intent를 수행할 수 있게 해주는 것이다.

다른 어플리케이션을 통해 Intent를 실행할 수 있도록 PendingIntent를 전달할 수 있다.

예시

  • Notification
    • NotificationManager에게 PendingIntent 전달
  • Widget
    • RemoteView에 ClickListener로 PendingIntent를 설정
    • AppWidgetManager가 PendingIntent를 실행
  • 특정 시점에 실행
    • AlarmManager에게 PendingIntent 전달

Android 12 부터는 PendingIntent를 만들 때 변경 가능 여부를 지정해야한다.

  • PendingIntent.FLAG_MUTABLE
  • PendingIntent.FLAG_IMMUTABLE

PendingIntent는 변경될 수 있는데, 악성 앱이 PendingIntent를 수정하여, 우리 앱의 다른 컴포넌트에 접근할 수도 있다.

Foreground Service

백그라운드에서 포그라운드 서비스를 시작할 수 없다.

앱이 백그라운드 상태에 있는 동안 포그라운드 서비스를 시작하려고 하면 ForegroundServiceStartNotAllowedException 이 발생한다.

WorkManager를 사용해야한다.

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

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

  • 앱이 활동과 같은 사용자에게 표시되는 상태에서 전환됩니다.
  • 사용자가 앱과 관련된 UI 요소에서 작업을 실행합니다. 예를 들어 대화창이나 알림위젯, 활동과 상호작용할 수 있습니다.
  • 사용자가 앱의 배터리 최적화를 사용 중지합니다. 시스템 설정에서 앱의 앱 정보 페이지로 사용자를 보내 사용자가 이 옵션을 찾도록 할 수 있습니

포그라운드 서비스 실행 제한  |  Android 12  |  Android Developers


Uploaded by N2T

+ Recent posts