[안드로이드/Android] PART5 PendingIntent(펜딩 인텐트)

Posted by 앱해피
2015. 6. 23. 02:35 안드로이드 이론

 

펜딩 인텐트(Pending Intent)

 

PendingIntent는 Intent 객체를 감싸는 객체다. PendingIntent의 목적은 그것이 포함하고 있는 인텐트를 외부의 다른 어플리케이션에서 실행할 수 권한을 주는 것이다.

(PendingIntent는 마치 자신의 프로세스에서 실행되는 것과 같이 처리된다)

 

Pending Intent가 주로 사용되는 케이스

 

유저가 Notification를 이용해서 특정 액션을 수행할 때, 실행될 인텐트를 생성한다.
(이 경우 안드로이드 시스템의 NotificationManager가 Intent를 실행한다.)

 

유저가 AppWidget을 이용해서 특정 액션을 수행할 때, 실행될 인텐트를 생성한다.

(이 경우 홈 스크린 어플리케이션이 Intent를 실행한다)

 

미래의 특정 시점에 실행될 인텐트를 선언한다.
(이 경우 안드로이드 시스템의 AlarmManager가 인텐트를 실행한다.)

 

각각의 Intent 객체는 Activity, Service, BroadcastReceiver와 같이 구체적인 컴포넌트 유형을 처리하도록 설계되어있기 때문에, PendingIntent 역시 이같은 컴포넌트를 대상으로 생성될 수 있어야 한다.

 

Pending Intent를 생성할 때, startActivity()와 같은 메소드 호출을 통해서 실행되서는 안된다. 각각의 생성자 메소드를 호출하여 PendingIntent를 만들 때 사용하고자 하는 컴포넌트의 유형을 선언해야 한다.

 

• 액티비티를 시작할 인텐트를 생성하기 위해선 PendingIntent.getActivity()를 사용한다.

 

• 서비스를 시작할 인텐트를 생성하기 위해서는 PendingIntent.getService()를 사용한다.

 

• BroadcastReceiver를 시작할 인텐트를 생성하기 위해서는 PendingIntent.getBroadcast()

를 사용한다.

 

다른 어플리케이션으로부터 PendingIntent를 받지 않는 이상, (PendingIntent를 생성하는)위에 있는
메소드들이 프로그램을 개발하는 과정에서 필요하게 될 유일한 PendingIntent 메소드다.

 

각각의 메소드는 1) 현재 어플리케이션의 Context 객체를 필요로 하며, 2) 감쌀 Intent 정보가 필요하며 3) 인텐트를 어떤 방식으로 사용할지 지정하는 하나 이상의 플래그 값이 필요

 

감사합니다 ^_^