Android

[Android] PendingIntent란?

JunsuKim 2022. 8. 26.
728x90

PendingIntent

PendingInten는 Pending과 Intent를 합쳐놓은 단어이다.

Intent란 무엇인가? 컴포넌트 간의 작업 수행을 위한 정보를 전달하는 역할을 맡고 있다.

이제 Pending에 대해 알아보자.

Pending을 직역해보자면 다음과 같다.

"보류", "임박한"의 뜻을 가지고 있다.

이제 Pending과 Intent를 합친 PendingIntent에 대해 유추해볼 수 있다.

PendingIntent는 Intent(정보 전달)을 바로 실행하는 것이 아닌, 특정 시점에 수행하도록 하는 역할을 하는 것이고,

기본 목적은 다른 애플리케이션의 권한을 허용하여 가지고 있는 Intent를 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 하는 것이다.

 

예를 들어 Notification으로 작업을 수행할 때, Notification을 클릭하면 Intent가 실행되도록 하며, 안드로이드의 NotificationManager가 Intent를 실행한다.

이처럼 다른 앱이 프로세스를 점유하고 있을 때, Intent를 수행하기 위해서는 PendingIntent를 사용해야 한다.

PendingIntent는 컴포넌트의 유형에 따라 생성하는 방법이 다르다.

PendingIntent 생성 방법

// Activity
PendingIntent.getActivity(Context, requestCode: Int, Intent, flag: Int)
PendingIntent.getActivities(Context, requestCode: Int, Intent[], flag: Int)

// Broadcast
PendingIntent.getBroadCast(Context, requestCode: Int, Intent, flag: Int)

// Service
PendingIntet.getService(Context, requestCode: Int, Intent[], flag: Int)

PendingIntent를 생성할 때 여러 flag 옵션이 있다. 각각이 어떠한 역할을 하는지 보자.

  • FLAG_CANCEL_CURRENT: 사용할 Intent에 대해 한 번에 하나만 활성화해야 하는 경우 사용하며, 이전에 생성한 PendingIntent를 취소한 후 새로 생성한다.
  • FLAG_IMMUTABLE: 생성된 PendingIntent가 불변(변경될 수 없음)이라는 것을 나타낸다.
  • FLAG_MUTABLE: 생성된 PendingIntent가 변경 가능해야한다는 것을 나타낸다.
  • FLAG_NO_CREATE: PendingIntent가 아직 존재하지 않는 경우 생성하는 대신 단순 null을 반환함을 나타낸다.
  • FLAG_ONE_SHOT: 해당 PendingIntent를 한 번만 사용할 수 있음을 나타낸다.
  • FLAG_UPDATE_CURRENT: 기존에 생성된 PendingIntent가 있다면 새로운 값으로 업데이트한다.
728x90

댓글