티스토리 뷰

728x90

 

PendingIntent

PendingIntent를 직역하면, 보류 인텐트다.

말 그대로 Intent를 바로 시작하지 않고 미루어서 특정 시점에 Intent를 시작하게 해주는 클래스다.

 

PendingIntent를 생성할 때 생성자 메서드로 Intent를 넣는다.

사용자가 외부 앱을 사용하고 있을 때, PendingIntent 안에 있는 Intent를 실행하게 해준다.

외부 앱에게 권한을 허가하여, 자신의 앱 자체 프로세스에서 실행하는 것처럼 사용하게 해주는 것이다.

즉, 외부 앱을 사용하고 있을 때 자신의 앱 Intent를 사용해야 할 경우 PendingIntent를 쓴다.

 

 

PendingIntent 사용 사례

- 앱 Notification 클릭 시 Intent 실행

- 휴대폰 홈 화면에 있는 앱 위젯 클릭 시 Intent 실행

- AlarmManager를 통해 지정된 시간에 Intent 실행

 

 

PendingIntent 생성자 메서드

- Activity를 시작하는 Intent인 경우, PendingIntent.getActivity()

- Service를 시작하는 Intent인 경우, PendingIntent.getService()

- BroadcastReceiver를 시작하는 Intent인 경우, PendingIntent.getBroadcast()

 

인자로는 (context: Context!, requestCode: Int, intent: Intent, flags: Int) 가 들어간다.

 

1. Context

2. requestCode : PendingIntent를 구분하기 위한 코드

3. intent : PendingIntent가 실행할 인텐트

4. flags : PendingIntent에 대한 정보 (여러개 지정 가능)

    - FLAG_UPDATE_CURRENT : 이미 생성된 PendingIntent가 있다면, 덮어씌움

    - FLAG_CANCLE_CURRENT : 이미 생성된 PendingIntent가 있다면, 취소 후 새로 생성

    - FLAG_NO_CREATE : 이미 생성된 PendingIntent가 있다면, 그걸 사용

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

 

 

생성한 PendingIntent는 어떤 작업에 활용할 것이냐에 따라 다르다.

AlarmManager에서 사용하는 경우, 특정 시간에 alarm을 보내는 setRepeating() 등의 함수의 인자로 PendingIntent를 전달한다.

 

 

 

 

참조

https://developer.android.com/guide/components/intents-filters?hl=ko

https://velog.io/@haero_kim/Android-PendingIntent-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함