티스토리 뷰
[android] PendingIntent - getBroadcast(), getService(), getActivity()
tbMaster 2020. 1. 7. 15:22PendingIntent는 타 애플리케이션을 제어하는 역할을 수행함.
Broadcast로 전달하는 것, Activity에서 받는 것, Service로 받는 것이 있음.
*Broadcast : Android 앱에서는 게시-구독 디자인 패턴(Publish-subscribe pattern)과 유사한 브로드캐스트 메시지를 받거나 보낼 수 있음.
관심있는 이벤트가 발생할 때 이러한 브로드캐스트가 전송.
https://developer.android.com/guide/components/broadcasts
*Service : 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션의 구성요소이며, 사용자 인터페이스를 제공하지 않음.
https://developer.android.com/guide/components/services?hl=ko
1) Broadcast 사용법
- Broadcast로 전달하려는 부분
intent를 통한 전달메시지 생성, 이를 PendingIntent의 getBroadcast 로 설정
- Broadcast로 전달된 메시지를 받는 부분
Broadcast로 전달된 메시지를 받을 Receiver 클래스를 생성 (BroadcastReceiver 를 상속받은 클래스)
BoradcastReceiver를 상속받으면 onReceive(Context, Intent)가 생성되며, intent는 전달하고자 했던 메시지.
- AndroidManifest.xml 설정 부분
PendingIntent를 통해 메시지를 전달받기 위해서는, 전달받고자 하는 타 애플리케이션의 일부분( 여기서는 BroadcastReceive )에 대한 AndroidManifest.xml 설정이 필요.
recevier 태그 내에 android:exported 를 true로 설정하여 외부에서 호출하는 메시지를 받을 수 있도록 함.
2) Activity 사용법
- Activity로 전달하려는 부분
Broadcast 설정과 마찬가지. 단, 메시지를 전달받는 부분이 Activity 형태이기 때문에 getActivity로 설정
-Activity로 전달된 메시지를 받는 부분
Activity로 전달받을 수 있도록 설정했으므로 Activity로 전달받을 클래스를 생성.
ThirdActivity 생성 ( Activity를 상속받음 )
-AndroidManifest.xml 설정 부분
외부에서 해당 Activity(ThirdActivity) 로 전달받기 위해서는 AndroidManifest.xml에서 Activity에 대한 android:exported를 true로 설정하여, 외부에서 발생한 메시지를 전달받을 수 있도록 함.