티스토리 뷰

Android/BroadcastReceiver

BroadcastReceiver (1)

parkho79 2020. 5. 14. 09:15
300x250
300x250



BroadcastReceiver?

각각의 component 들 간에 메시지를 전달하는 역할을 한다.

(Android 4대 component : Activity, Service, Broadcast receiver, Contents provider)

 

라디오를 생각하면 이해가 빠를 것이다. 

하단 그림과 같이 송신측에서 방송을 하면 채널이 같은 수신측에서 방송을 듣는 것이다.

송수신측의 채널 역활을 하는 녀석이 바로 intent 이다.

[Android/Intent] - Intent (1)

 



BroadcastReceiver 유형

◼ 정적, 암시적, Implicit BroadcastReceiver

Receiver 를 고정해서 등록해 놓고 원하는 방송만 수신하는 receiver 다.

- 사용자가 직접 AndroidManifest.xml 파일에 receiver 를 등록하는 방식이다.

- 한번 등록되면 해제할 수 없다.

- 해당 앱이 설치될 때 자동으로 등록된다.

[Android/BroadcastReceiver] - BroadcastReceiver (2) - 정적, 암시적, implicit



◼ 동적, 명시적, Explicit BroadcastReceiver

Receiver 를 원하는 시점에 등록(registerReceiver) 과 해제(unregisterReceiver) 하여 자유롭게 사용한다.

- 메니페스트에 등록하지않고 소스상에 등록을 한다.

- 자신이 등록한 component 의 생명 주기가 끝나면 사라진다.

-   (Context 가 요효할 동안 동작한다.)

[Android/BroadcastReceiver] - BroadcastReceiver (3) - 동적, 명시적, explicit



◼ LocalBroadcast

Support library v4 에 포함된 기능으로 현재 프로세스 안에서만 유요한 Broadcast.

- Broadcast message 가 앱 밖으로 전달되지 않기 때문에 앱의 정보가 노출될 걱정이 없다.

- 다른 앱에서 보내는 LocalBroadcast 역시 우리 앱으로 들어오지 못한다.

- System 에 global broadcast 를 보내는 것보다 훨씬 효율적이다.

[Android/BroadcastReceiver] - BroadcastReceiver (4) - LocalBroadcast



System Broadcast

Android system 에서 이벤트가 발생하여 보내는 Broadcast.

아래와 같이 특정 이벤트가 발생하여 개발자가 만든 app 에서 작업이 필요한 경우 사용한다.

- 시스템이 부팅되어 바탕화면의 위젯 정보를 갱신한다.

- 베터리가 부족하여 사용자에게 알려준다.

- SD 카드가 추가되어 해당 드라이브를 표시한다.

......

[Android/BroadcastReceiver] - BroadcastReceiver (5) - System broadcast



728x90
댓글