PendingIntent
PendingIntent는 Intent를 갖고 있는 클래스이다. 기본적으로 다른 애플리케이션(프로세스)에서 PendingIntent를 생성한 앱을 대신하여 액티비티를 실행하는 등 기술한 작업을 수행할 수 있도록 하는게 가능하다. 즉, 다른 앱에 PendingIntent 를 제공하면 다른 앱이 동일한 권한을 소유하는 것 처럼 지정한 작업을 수행할 수 있게 된다.
실제 사용 예시
설명만으로는 이해하기 어려울 수 있으므로 자세한 예시를 들면 다음과 같다.
- Notification을 생성할 때 PendingIntent를 전달해주어 Notification을 통해 Intent를 실행하도록 하는 것이 가능하다.
- AlarmManager를 통해 특정 시점에 어떤 작업을 수행해야 할 때 PendingIntent를 전달할 수 있다.
기본적으로 Notification은 NotificationManager가 관리하여 생성하고 AlarmManager의 작업 또한 그렇다. 그렇기 때문에 해당 프로세스에서 우리가 개발한 앱의 액티비티나 서비스 등을 실행시키는 동작을 하기 위해서는 PendingIntent를 전달해주어야 한다.
PendingIntent's FLAG
PendingIntent를 생성할 때 여러 FLAG 옵션이 존재한다. 옵션 별 설명은 다음과 같다.
- FLAG_CANCEL_CURRENT: 이전에 생성한 PendingIntent는 취소하고 새로 만든다.
- FLAG_IMMUTABLE: 생성 할 PendingIntent를 수정 불가능하게 한다.
- FLAG_NO_CREATE: 이전에 생성한 PendingIntent가 있다면 재사용하고 없다면 null을 반환한다.
- FLAG_CANCEL_CURRENT: 해당 PendingIntent는 일회성이다.
- FLAG_UPDATE_CURRENT: 기존에 PendingIntent가 존재하면 해당 Intent의 Extra Data를 새 값으로 갱신한다.
'안드로이드' 카테고리의 다른 글
뷰모델(ViewModel)에서 데이터를 로딩하는 다양한 방법 (0) | 2021.10.02 |
---|---|
[안드로이드] 태스크(Task)와 백 스택(Back Stack)의 개념과 Launch Mode, Intent Flag (1) | 2021.07.26 |
[안드로이드] Retrofit으로 가져온 데이터를 디바이스에 캐싱하기 (0) | 2021.07.24 |
[Android] Coroutine, Retrofit을 활용한 비동기 네트워킹 처리 중 에러 핸들링 (0) | 2021.07.17 |
[안드로이드] FCM 서비스를 통해 메시지를 foreground, background에서 받을 경우 데이터 처리 방법 및 액티비티 이동 (2) | 2021.07.09 |