ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android][Kotlin] : PendingIntent 란?
    안드로이드 2021. 7. 15. 15:27
    728x90
    반응형

    PandingIntent


    FCM 공부를 하던 중에 PendingIntent를 사용할 일이 생겨 공부를 하게 되었다.

    PendingIntent란 Intent를 가지고 있는 클래스로, 기본 목적은 다른 프로세스의 권한을 허가하여 가지고 있는 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 하는 것.

     

    PendingIntent의 호출 방법


    • Activity를 시작하는 인텐트 : PendingIntent.getActivity(Context,int,Intent,int,flags)
    • BrodcastReceiver를 시작하는 인텐트 : PendingIntent.getBroadcast(Context,int,Intent,int,flags)
    • Service를 시작하는 인텐트 : PendingIntent.getService(Context,int,Intent,int,flags)

    각 호출하려는 컴포넌트에 따라 생성해주면 된다.

     

    PendingIntent Flag


    PendingIntent의 핵심인 getActivity(),getBroadcast,()getService()의 파라미터 중 flags의 종류와 의미에 대해서 알아보자.

     

    • FLAG_CANCEL_CURRENT : 이전 생성되어 있는 것을 생성하기 전에 취소하고 새롭게 생성하는 FLAG
    • FLAG_IMMUTABLE : 생성된 인텐트를 변경할 수 없음을 나타내는 FLAG
    • FLAG_MUTTABLE : 생성된 인텐트가 변경 가능함을 나타내는 FLAG
    • FLAG_ONE_SHOT : 이 Intent는 일회성으로 생성하는 FLAG
    • FLAG_NO_CREATE : 생성된 Intent가 아직 존재하지 않는 경우 생성하는 대신 null을 반환하는 FLAG
    • FLAG_UPDATE_CURRENT : 생성된 Intent 이미 존재하면 이를 유지하되 추가 데이터를 새 Intent에 있는 것으로 대체하는 FLAG

     

    PendingIntent 예제


    PendingIntent는 주로 Notification, 바탕화면 위젯, Alarm 등을 통해 서로 다른 프로세스에서 실행 시 각 프로세스에 맞는 작업을 실행하도록 할 때 사용한다.

    필자는 Notification을 공부하던 중이라 Notification에 사용되는 예제를 가져왔다.

    //pendingIntent : 인텐트를 가지고 있는 클래스로, 기본 목적은 다른 애플리케이션의 권한을 허가해 갖고있는 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 하는 것
    val pendingIntent = PendingIntent.getActivity(context,0,전달하려는 intent,flag)
    // 두번째 인자에 0을 넣거나 1을 넣으면 이 id값에 따라 앱은 별개의 푸시가 오게된다.
    반응형

     

    참고
    https://developer.android.com/reference/android/app/PendingIntent
    728x90
    반응형

    댓글

Designed by ZibroTistory.