PendingIntent는 Intent를 가지고 있는 클래스로, 기본 목적은 다른 어플리케이션(다른 프로세스)의 권한을 허가하여 가지고 있 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하는 것입니다.
보통은 사용되는 동작은 : 다운로드나 어떠한 작업한 작업의 완료 push를 눌렀을 때 앱으로 다시 복귀하여 특정 동작을 이어나갈 수 있게 해주는 기능을 만들 때 사용합니다.
동작하지 않습니다. 왜냐하면 사용자가 다른 앱을 구동하고 있다는 뜻은 다른 앱에서부터 내가 정의한 Intent를 싱행한다는 것인데 그것은 불가능하기 때문입니다.
PendingIntent를 사용한다면 특정 시점에 Intent를 수행한느 것이보장되었기 정삭적으로 실행한다.
PendingIntent 동작 -> 다른 프로세스(앱) 권한을 허가 -> 본인 앱에서 Intent를 실행하는 것처럼 사용하게 하는 것입니다.
런처 바탕화면의 위젯으로 Intent 작업을 수해할 때 PendingIntent를 사용합니다.
AlarmManager를 통해 지정된 시간에 인텐트가 시작되도록 할 때 PendingIntent를 사용합니다.
PendingIntent.getActivity(Context, Int, Intent, Int)
PendingIntent.getService(Context, Int, Intent, Int)
PendingIntent.getBroadcast(Context, Int, Intent, Int)
Context : 정보
requestCode : PendingIntent를 가져올 때 구분하기 위한 고유 코드
실행할 Intent
Flag
-> FLAG_CANCEL_CURRENT : 이전에 생성한 PendingIntent 취소 후 새로 생성
-> FLAG_NO_CREATE : 이미 생성된 PendingIntent가 있다면 재사용( 없으면 Null 리턴)
-> FLAG_ONE_SHOT : 해당 PedingIntent를 일회성으로 사용
-> FLAG_UPDATE_CURRENT : 이미 생성된 PendingIntent가 있다면, Extra Data만 갈아끼움(업데이트)