[안드로이드] sendStickyBroadcast() / sendBroadcast()
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