*PendingIntent 개념
Pending 은 '보류', '임박' 이런 뉘앙스를 갖고 있다. PendingIntent 는, 가지고 있는 Intent 를 당장 수행하진 않고 특정 시점에 수행하도록 하는 특징을 갖고 있다. 이 '특정 시점'이라 함은, 보통 해당 앱이 구동되고 있지 않을 때이다.
PendngIntent은 다른 애플리케이션의 코드에서 실행될 수 있는 작업(인텐트)을 나타내는 클래스입니다. 일반적으로 PendingIntent는 다른 애플리케이션 구성 요소(액티비티, 서비스, 브로드캐스트 수신자)에서 실행될 작업을 지정하는 데 사용됩니다.
PendingIntent는 애플리케이션 간의 작업 실행을 위해 사용되는 "포장된" 인텐트입니다. 다른 컴포넌트(예: 액티비티, 서비스)가 PendingIntent를 받고, 해당 PendingIntent를 실행하면 원래의 인텐트에 지정된 작업을 수행합니다.
PendingIntent는 일반적으로 시스템 서비스(예: AlarmManager, NotificationManager, AppWidgetManager)와 함께 사용되어 예약된 작업, 알림 터치 처리, 위젯 업데이트 등과 같은 작업을 수행하는 데 사용됩니다. 또한 외부 애플리케이션의 컴포넌트에 대한 액세스 권한을 부여할 때도 사용될 수 있습니다.
PendingIntent 객체를 생성할 때 getActivity(), getService(), getBroadcast()와 같은 정적 메서드를 사용하여 해당 작업을 수행할 대상 컴포넌트를 지정합니다. 이러한 메서드는 Context를 매개변수로 받으며, 해당 컴포넌트의 Intent를 반환하는 데 사용됩니다.
***예를 들어, getActivity()를 사용하여 PendingIntent를 생성하면, 해당 PendingIntent는 startActivity()를 호출하는 데 사용됩니다. 마찬가지로 getService()는 startService()를 호출하고, getBroadcast()는 sendBroadcast()를 호출하는 데 사용됩니다.
따라서 PendingIntent 객체는 다른 애플리케이션의 코드에서 실행되는 작업을 나타내는 래퍼(Wrapper) 역할을 합니다.
PendingIntent는 Android에서 다른 애플리케이션(또는 앱 내의 다른 구성 요소)이 특정 동작을 수행할 수 있도록 하는 래퍼(Wrapper) 클래스입니다. 다른 앱이나 앱 구성 요소에서 특정 시점에 실행되어야 하는 작업을 나타내는 인텐트(Intent)와 함께 사용됩니다.
PendingIntent는 인텐트(Intent)를 래핑하고, 시스템에 의해 필요한 시점에 실행되도록 예약된 작업을 나타냅니다. 주로 다음과 같은 상황에서 사용됩니다:
알람이나 알림: 예를 들어, 특정 시간에 알림을 표시하거나 알람을 울리도록 설정할 때 PendingIntent를 사용합니다.
외부 애플리케이션 호출: 다른 앱의 구성 요소를 실행하고자 할 때, 인텐트를 사용하여 해당 앱의 구성 요소를 호출하는데 PendingIntent를 사용할 수 있습니다.
서비스 호출: 백그라운드에서 실행되는 서비스를 시작하고자 할 때 PendingIntent를 사용할 수 있습니다.
PendingIntent는 다른 컴포넌트에 대한 접근 권한을 부여하고, 해당 작업이 실행될 때까지 인텐트를 저장하고 유지합니다. 그러면 해당 작업이 수행되어야 할 시점에 시스템이 해당 PendingIntent를 실행합니다.
PendingIntent는 getActivity(), getService(), getBroadcast()와 같은 정적 메서드를 사용하여 생성할 수 있습니다. 이러한 메서드는 Context를 매개변수로 받으며, 적절한 PendingIntent를 반환합니다.
일반적으로 AlarmManager와 함께 사용될 때 getBroadcast()를 사용하여 PendingIntent를 생성하고, 알람이 울리거나 알림을 표시하는 데 사용됩니다. 그러나 PendingIntent는 다른 컴포넌트와 상호작용할 수 있는 다양한 시나리오에서 사용될 수 있습니다.
*참고
https://velog.io/@haero_kim/Android-PendingIntent-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0
[Android] PendingIntent 개념 익히기
'그냥 인텐트랑 뭐가 다른거지..' 하셨던 여러분들을 위해
velog.io
'+)기록 > 과제' 카테고리의 다른 글
정리사항 67 - 스레드에서 액티비티 완전 실행 후 액티비티의 함수 실행 (0) | 2023.05.26 |
---|---|
정리사항 66 - 커스텀 다이얼로그 제어(키보드 상호작용) (0) | 2023.05.24 |
정리사항 64 - AlarmManager, BroadcastReceiver class(설정한 시간마다 앱 자동 재실행 구현) (0) | 2023.05.15 |
정리사항 63 - SharedPreference(내부저장소)의 edit apply()와commit() (0) | 2023.05.12 |
정리사항 62 - 레이아웃 인스펙터(UI 디버깅) (0) | 2023.05.11 |