티스토리 뷰
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
'app > android' 카테고리의 다른 글
[안드로이드/코틀린] BroadcastReceiver 개념, 구현 방법 알아보기 (0) | 2023.09.25 |
---|---|
[안드로이드/코틀린] Intent와 Intent-filter 알아보기 (0) | 2023.09.25 |
[안드로이드/코틀린] fragment에서 context, activity를 얻는 방법 (0) | 2023.09.23 |
[안드로이드/코틀린] onBackPressed() deprecated 대체 방법, OnBackPressedCallback 알아보기 (0) | 2023.09.23 |
[안드로이드/코틀린] Activity와 Fragment 간 데이터 전달하기 (0) | 2023.09.21 |