프로그래밍/Android
[Android] 동적 BroadcastReceiver
DwEnn
2019. 1. 8. 10:16
728x90
반응형
동적 BroadcastReceiver
동력 BroadcastReceiver 는
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <receiver android:name=".receiver.MyCameraBroadcastReceiver" android:enabled="true" > <intent-filter android:priority="9999999" > <action android:name="android.provider.MediaStore.ACTION_IMAGE_CAPTURE" /> <action android:name="android.intent.action.CAMERA_BUTTON" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> </receiver> | cs |
이처럼 AndroidManifest.xml 에 등록하는 정적 리시버와 다르게
1 2 | registerReceiver( BroadcastReceiver, IntentFilter ) unregisterReceiver( BroadcastReceiver ) | cs |
이 함수를 통해 리시버를 등록, 해제 한다
등록시에 IntentFilter 에는 수신하고자 하는 이벤트를 전달해 준다
사용법은
http://helloit.tistory.com/267
등 여러곳에 잘 나와있으니 참고하자
정적 리시버와의 차이점
정적 리시버를 등록하여 사용하면 구현한 앱이 동작 중이 아닌 상황에서도
리시버가 동작한다
이처럼 무의미한 CPU 와 배터리 사용을 방지하기 위해 동적인 방법으로
리시버를 등록하게 된다
우선순위
동적 리시버는 동시에 실행되기 때문에 우선순위를 높이는 것이 큰 의미는 없지만
sendOrderedBroadcast() 함수를 사용하면 순서대로 처리되도록 할 수 있다
(특정 리시버가 방송을 수신했을 때 다른 리시버가 방송을 받지 못하도록 중단할 수 있는 기능이 있다)
반면 순서대로 실행되는 정적 리시버는 우선순위에 의미가 있다
정적 리시버의 우선순위는 AndroidManifest.xml 을 통해 설정 가능하다
<intent-filter android:priority="9999999" >
+
[ sticky intent 에 관하여 ]
http://blog.naver.com/PostView.nhn?blogId=huewu&logNo=110090854068
반응형