일반 intent는 여러부분에서 자주 사용하게 되지만, PendingIntent는 경험이 많지 않다면 생소하게 보일 수 있는 녀석이다.
Pending Intent는 intent의 일종으로 시간의 개념에 따라 차이를 가진다
일반적으로 intent는 작업을 요청하는 인텐트를 사전에 생성하는 경우에 사용한다. 반면에, Pending Intent는 특정 시점에 자신이 아닌 다른 컴포넌트들이 펜딩인텐트를 사용하여 다른 컴포넌트에게 작업을 요청시키는 데 사용된다는 점이다.
쉽게 설명하자면
"야 A한테 이 작업(Intent)좀 3시간 있다가 하라고 해. 지금 당장 말고"
정도로 볼 수 있을 것이다.
getActivity(Context, int, Intent, int)
-> Activity를 시작하는 인텐트
getBroadcast(Context, int, Intent, int)
-> BroadcastReceiver를 시작하는 인텐트
getService(Context, int, Intent, int)
-> Service를 시작하는 인텐트
3개 모두 Context를 요구하며 여기서 Context는 현재 App의 Context이다.
FLAG_CANCEL_CURRENT : 이전에 생성한 PendingIntent는 취소하고 새로 만든다.
FLAG_IMMUTABLE : 생성된 PendingIntent를 수정 불가능 하게 한다.
FLAG_NO_CREATE : 생성된 PendingIntent 를 반환한다.(재사용 가능)
FLAG_ONE_SHOT : 해당 Flag로 생성한 PendingIntent는 일회성이다.
FLAG_UPDATE_CURRENT : 이미 생성된 PendingIntent가 존재하면 해당 Intent의 Extra Data를 대체