티스토리 뷰
[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
브로드캐스트 개요 | Android Developers
Android 앱은 Android 시스템 및 기타 Android 앱에서 게시-구독 디자인 패턴과 유사한 브로드캐스트 메시지를 받거나 보낼 수 있습니다. 관심 있는 이벤트가 발생할 때 이러한 브로드캐스트가 전송됩니다. 예를 들어 Android 시스템은 시스템 부팅 또는 기기 충전 시작과 같은 다양한 시스템 이벤트가 발생할 때 브로드캐스트를 전송합니다. 또한 앱은 맞춤 브로드캐스트를 전송하여 다른 앱이 관심을 가질만한 사항(예: 일부 새로운 데이터가 다운로드
developer.android.com
*Service : 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션의 구성요소이며, 사용자 인터페이스를 제공하지 않음.
https://developer.android.com/guide/components/services?hl=ko
서비스 개요 | Android Developers
Service는 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있으며, 이는 사용자가 다른 애플리케이션으로 전환하더라도 백그라운드에서 계속해서 실행됩니다. 이외에도, 구성 요소를 서비스에 바인딩하여 서비스와 상호작용할 수 있으며, 심지어는 프로세스 간 통신(IPC)도 수행할 수 있습니다. 예를 들어 한 서비스는 네트워크 트랜잭션을 처리
developer.android.com
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로 설정하여, 외부에서 발생한 메시지를 전달받을 수 있도록 함.