Android PendingIntent란?

HEETAE HEO·2022년 6월 27일
0
post-thumbnail
post-custom-banner

PendingIntent

PendingIntent는 Intent를 가지고 있는 클래스로, 기본 목적은 다른 어플리케이션(다른 프로세스)의 권한을 허가하여 가지고 있 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하는 것입니다.

PendingIntent 사용하는 곳

  • Notification으로 작업을 수행할 때 인테트가 실행되도록 합니다. Notification은 Android system의 NotificationManager가 Intent를 실행합니다. 즉 다른 Process에서 수행하기 때문에 Notification으로 Intent 수행 시 PendingIntent의 사용이 필수 입니다.

보통은 사용되는 동작은 : 다운로드나 어떠한 작업한 작업의 완료 push를 눌렀을 때 앱으로 다시 복귀하여 특정 동작을 이어나갈 수 있게 해주는 기능을 만들 때 사용합니다.

그렇다면 이러한 동작을 Intent로 하게 된다면?

동작하지 않습니다. 왜냐하면 사용자가 다른 앱을 구동하고 있다는 뜻은 다른 앱에서부터 내가 정의한 Intent를 싱행한다는 것인데 그것은 불가능하기 때문입니다.

PendingIntent를 사용한다면 특정 시점에 Intent를 수행한느 것이보장되었기 정삭적으로 실행한다.

PendingIntent 동작 -> 다른 프로세스(앱) 권한을 허가 -> 본인 앱에서 Intent를 실행하는 것처럼 사용하게 하는 것입니다.

다른 용도

  • 런처 바탕화면의 위젯으로 Intent 작업을 수해할 때 PendingIntent를 사용합니다.

  • AlarmManager를 통해 지정된 시간에 인텐트가 시작되도록 할 때 PendingIntent를 사용합니다.

PendingIntent 생성하는 방법

Activity를 시작하는 Intent의 경우

PendingIntent.getActivity(Context, Int, Intent, Int)

Service

PendingIntent.getService(Context, Int, Intent, Int)

BroadcastReceiver

PendingIntent.getBroadcast(Context, Int, Intent, Int)

파라미터 정보

  1. Context : 정보

  2. requestCode : PendingIntent를 가져올 때 구분하기 위한 고유 코드

  3. 실행할 Intent

  4. Flag

    -> FLAG_CANCEL_CURRENT : 이전에 생성한 PendingIntent 취소 후 새로 생성

    -> FLAG_NO_CREATE : 이미 생성된 PendingIntent가 있다면 재사용( 없으면 Null 리턴)

    -> FLAG_ONE_SHOT : 해당 PedingIntent를 일회성으로 사용

    -> FLAG_UPDATE_CURRENT : 이미 생성된 PendingIntent가 있다면, Extra Data만 갈아끼움(업데이트)

profile
Android 개발 잘하고 싶어요!!!
post-custom-banner

0개의 댓글