[Android] 주요 4대 컴포넌트 - Broadcast Receiver

H43RO·2021년 8월 29일
4

Android 와 친해지기

목록 보기
5/26
post-thumbnail

💡 Android 공식 문서를 참고하여 작성한 내용입니다
https://developer.android.com/guide/components/fundamentals#ActivatingComponents

3. Broadcast Receiver

Broadcast Receiver 라는 이름에서 알 수 있듯, Broadcast 를 수신할 수 있는 구성요소를 의미한다. 근데 애초에 브로드캐스트가 무엇인지 모르기 때문에 뭘 수신하는 녀석인지 알 길이 없다. 간략하게 브로드캐스트의 개념부터 알아보자.

Broadcast

브로드캐스트의 뜻은 방송이다. 안드로이드에서 브로드캐스트도 비슷한 맥락이다. 브로드캐스트란 안드로이드 시스템이나, 기타 앱에서 특정 이벤트가 발생할 때 시스템 전역에 이를 알리는 것이다. 이를테면 폰이 부팅됐을 때, 충전이 시작됐을 때, 전화가 왔을 때와 같은 다양한 시스템 이벤트가 발생할 수 있고, 이것이 발생할 때 브로드캐스트를 뿌리는 것이다.

Broadcast 를 수신하는 녀석

브로드캐스트는 어떤 이벤트가 발생할 때 시스템 전역에 이를 방송하는 것이라 했는데, 그럼 몇몇 앱들은 필요에 따라 관심있는 브로드캐스트에 대해서 수신을 해서 이벤트 처리를 해볼 수 있지 않겠는가?

TV 방송불특정 다수에게 방송을 송출하고, 몇몇 사람들은 필요에 따라 수신료를 내고 해당 채널을 수신하게 된다. 똑같은 원리이다. 예를들어 충전이 시작됐을 때 브로드캐스트가 발생하고, 만약 충전 시작 시 애니메이션을 재생하는 앱을 구현한다면 해당 브로드캐스트를 수신하여 동작을 구현할 것이다.

이렇게 브로드캐스트를 수신하는 구성요소를 'Broadcast Receiver' 라고 한다. 앱이 특정 브로드캐스트를 수신하는 Broadcast Receiver 를 등록하면, 시스템은 해당 리시버가 수신하는 브로드캐스트가 발생할 때마다 해당 앱에 브로드캐스트를 자동으로 라우팅해준다. 이 동작은 옵저버 패턴으로 구현된다.

Broadcast Receiver 활용

아래는 시스템에서 지원하는 표준 브로드캐스트 목록 중 일부이다.

  • ACTION_TIME_TICK
  • ACTION_TIME_CHANGED
  • ACTION_TIMEZONE_CHANGED
  • ACTION_BOOT_COMPLETED
  • ACTION_PACKAGE_ADDED
  • ACTION_PACKAGE_CHANGED
  • ACTION_PACKAGE_REMOVED
  • ACTION_PACKAGE_RESTARTED
  • ACTION_PACKAGE_DATA_CLEARED
  • ACTION_PACKAGES_SUSPENDED
  • ACTION_PACKAGES_UNSUSPENDED
  • ACTION_UID_REMOVED
  • ACTION_BATTERY_CHANGED
  • ACTION_POWER_CONNECTED
  • ACTION_POWER_DISCONNECTED
  • ACTION_SHUTDOWN

이러한 것들을 수신하면 스마트폰의 상태 변화, 각종 인터럽트 발생 등의 동작을 알아차릴 수 있고 앱에서 쉽게 이들을 대응하는 동작을 구현해볼 수 있다.

또한 앱에서 브로드캐스트를 발생할 수도 있고, 다른 앱이 이를 수신받게 할 수도 있다. 다방면으로 활용가능한 컴포넌트이다.


이번 포스팅에선 브로드캐스트 리시버에 대하여 알아보았다. 다음 포스팅에선, Content Provider 라는 구성요소에 대하여 알아보자.

profile
어려울수록 기본에 미치고 열광하라

0개의 댓글