[안드로이드/Android] PART5 PendingIntent(펜딩 인텐트)
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) 인텐트를 어떤 방식으로 사용할지 지정하는 하나 이상의 플래그 값이 필요
감사합니다 ^_^
'안드로이드 이론' 카테고리의 다른 글
[안드로이드/android] 비트맵 이미지 최적화 로딩하기 - Loading Large Bitmaps Efficiently (1) | 2015.08.24 |
---|---|
[안드로이드/Android] 암시적 인텐트와 매니페스트(implicit intent, manifest) (0) | 2015.06.23 |
[안드로이드/Android] PART4 암시적 인텐트(Implicit Intent) 매니페스트(manifest) (0) | 2015.06.22 |
[안드로이드/Android] PART3 명시적, 암시적 인텐트의 예제 (0) | 2015.06.22 |
[안드로이드/Android] PART2 명시적 인텐트 암시적 인텐트에 대해서 (0) | 2015.06.22 |