오늘도 더 나은 코드를 작성하였습니까?

Pending Intent(보류 인텐트) 본문

Android Basic

Pending Intent(보류 인텐트)

hik14 2020. 9. 24. 22:32

PendingIntent 객체는 Intent 객체 주변을 감싸는 래퍼입니다.

 

 PendingIntent의 기본 목적은 외부 애플리케이션에 권한을 허가하여 안에 들어 있는 Intent를 마치 본인 앱의 자체 프로세스에서 실행하는 것처럼 사용하게 하는 것입니다.

 

Pending  인텐트의 주요 사용 사례

 

- 사용자가 여러분의 Notification으로 어떤 작업을 수행할 때 인텐트가 실행되도록 선언합니다(Android 시스템의  NotificationManagerIntent를 실행합니다) 알림 터치할 경우 인텐트로 구성요소 실행

 

- 사용자가 여러분의 앱 위젯으로 어떤 작업을 수행할 때 인텐트가 실행되도록 선언합니다(메인 화면 앱이 Intent를 실행합니다).

 

- 향후 지정된 시간에 인텐트가 실행되도록 선언합니다(Android 시스템의 AlarmManager가 Intent를 실행합니다).

 

 

 Intent 객체는 특정한 유형의 앱 구성 요소(Activity, Service 또는 BroadcastReceiver)가 처리하도록 설계되어 있으므로, PendingIntent도 같은 고려 사항을 생각해서 생성해야 합니다.

 

PendingIntent를 사용하는 경우, 여러분의 앱은 startActivity()와 같은 호출이 있는 앱을 실행하지 않게 됩니다.

대신 PendingIntent를 생성할 때 원래 의도한 구성 요소 유형을 선언해야 합니다. 이때 각각의 생성자 메서드를 호출하는 방법을 씁니다.

 

  • Activity를 시작하는 Intent의 경우, PendingIntent.getActivity()
  • Service를 시작하는 Intent의 경우, PendingIntent.getService()
  • BroadcastReceiver를 시작하는 Intent의 경우, PendingIntent.getBroadcast()

앱이 다른 앱에서 PendingIntent 수신하지 않는 한, 위의 PendingIntent를 생성하는 PendingIntent 메서드만 있으면 될 것입니다.

 

각 메서드는 현재 앱의 Context, 감싸고자 하는 Intent, 인텐트의 적절한 사용 방식을 나타내는 하나 이상의 플래그(예: 인텐트를 한 번 이상 사용할 수 있는지 여부) 등을 취합니다.

 

보류 인텐트 사용에 관한 자세한 내용은 각 해당되는 사용 사례에 대한 문서를 참조하세요. 예를 들어 Notifications  App Widgets API 가이드가 있습니다.

 

 

PendingIntent는 2가지 측면에서 활용도를 생각합니다.

 

- 현재가 아닌 미래 특정 Event 시점에 동작하도록 예약하기 위해서

- 특정 동작을 해당 시점에 내가(현재 Activity)가 떠 있지 않더라도 떠 있는것과 같이 동작할 수 있도록 설정하기 위해서

 

이러한 동작을 수행하는 조건을 앞서 살펴본 Flag들을 설정해서, 1회성으로쓰게 할지 아니면 1번만 사용할지, 아니면 매번 최신 정보로 업데이트할 지를결정하게 됩니다.

'Android Basic' 카테고리의 다른 글

Activity와 Fragment 생명주기 알아보기.  (0) 2021.02.19
Intent 테스트 및 일치  (0) 2020.09.26
Intent 수신 및 Intent-filter  (0) 2020.09.24
Intent  (0) 2020.09.23
Activity LifeCycle  (0) 2020.09.23