[Android] 안드로이드 정리 (12) - 브로드캐스트 수신자 (Broadcast Receiver)
Android

[Android] 안드로이드 정리 (12) - 브로드캐스트 수신자 (Broadcast Receiver)

728x90

 

 

브로드캐스팅이란?

 브로드캐스팅이란 메시지를 여러 객체에 전달하는 것을 뜻한다. 카카오톡에서 여러 사람에게 메시지를 전달할 때 그룹 채팅방을 만들어 메시지를 전달하는 것이 여기에 해당된다. 

 예를 들어, 다른 사람으로부터 문자를 받았을 때 이 문자를 SMS 수신 앱에 알려줘야 한다면 브로드캐스팅으로 전달하면 된다. 이런 메시지 전달 방식을 글로벌 이벤트(Global Event)라 부른다. 대표적인 예로는 전화나 문자 메시지가 오는 경우가 있다.

 앱에서 브로드캐스팅 메시지를 받고 싶다면 브로드캐스트 수신자를 만들어 앱에 등록하면 된다. 다시 말해, 기기 안에서 동작하는 다른 앱 A로부터 특정 메시지를 받기 위해 앱에 브로드캐스트 수신자를 등록하면 A 앱의 메시지가 전달되게 된다.

 

 

브로드캐스트 수신자 등록하고 사용하기

 브로드캐스트 수신자에는 onReceive() 메소드를 정의해야 한다. 이 메소드는 원하는 브로드캐스트 메시지가 도착하면 자동으로 호출된다. 만약 원하는 메시지만 받고 싶다면, 원하는 메시지를 인텐트 필터를 사용해 시스템에 등록하면 된다. 

<receiver
    android:name=".SmsReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>

 

 

브로드캐스트 수신자 동작 방식 정리하기

출처 : Do it! 앱 안드로이드 프로그래밍

 단말에서는 다른 사람으로부터 SMS 문자를 받았을 때 텔레포니(Telephony) 모듈이 처리하도록 한다. 이렇게 처리된 정보는 인텐트에 담겨 브로드캐스팅 방식으로 전달된다. 앱에 브로드캐스트 수신자를 매니페스트 파일에 등록을 해두면 시스템이 인텐트를 전달해주어 onReceive() 함수가 자동 호출하게 된다. 

 브로드캐스트 수신자를 사용하면서 주의할 점은 앱 A가 실행되어 있지 않아도 앱 A가 원하는 브로드캐스트 메시지가 도착하면 다른 앱 B를 실행하고 있는 도중에도 앱 A가 실행될 수 있다는 점이다. 이 때문에 새 개발 버전의 앱을 만들었을 경우에는 구 개발 버전의 앱을 삭제하는 것이 좋다. 

 앱을 실행하지 않은 상태에서도 인텐트 안에 들어 있는 메시지를 받아볼 수 있다는 점은 브로드캐스트 수신자가 갖고 있는 가장 중요한 특징이다. 

728x90