2014. 6. 12. 11:37ㆍPrograming/Android / Java
sendBroadcast( Intent intent )
일반적인 broadcast 는 sendBroadcast() 로 전달되는 순간에 등록된 receiver 들의 onReceive() 만을 호출하는 구조로 되어 있습니다.
이 Receiver에 등록이 되지 않는다면 해당 Message를 받을 수 없는 상태가 되어 버리는 것이지요.
요게 일반적인 어플에서는 문제가 되지 않으나, 네트워크 관련 정보를 업데이트 하는 경우에는 문제의 소지가 있습니다.
sendStickyBroadcast( Intent intent )
이로 인해서 나온게 바로 sendStickyBroadcast()입니다.
해당 API로 보낸 broadcast 는 system 에 남아있다가, 새롭게 해당 broadcast 를 받을 수 있는 receiver 가 등록되면
새로 등록된 receiver 의 onReceive() 를 호출해 줌으로써 받을 수 있게 되는 것입니다.
이를 제거 하고 싶을때는 removeStickyBroadcast() 로 하며,
이 Sticky broadcast 를 사용하기 위해서는 android.permission.BROADCAST_STICKY permission 이 필요합니다.
그렇지 않으면 SecurityException 이 발생합니다.
안드로이드 시스템에서 아래와 같은 항목들이 이 API를 사용하고 있습니다.
SPN_STRINGS_UPDATED_ACTION
ACTION_NETWORK_SET_TIMEZONE
ACTION_NETWORK_SET_TIME
CONNECTIVITY_ACTION
'Programing > Android / Java' 카테고리의 다른 글
[안드로이드] 지원 센서 확인 (Checking supported sensors in Android - SensorManager) (0) | 2014.06.12 |
---|---|
[안드로이드] 커스텀 탭 위젯 (Android Custom Tab Widget Background) (0) | 2014.06.12 |
블루투스 UUID란? (What is the bluetooth UUID?) (2) | 2014.05.26 |
안드로이드 블루투스 프로토콜 UUID 리스트 (Android Bluetooth SPP UUID) (0) | 2014.05.26 |
[Open Source] Android Voice Recorder with Waveform (0) | 2014.05.23 |