용도
전화가 걸려오거나 배터리 부족, 네트워크 끊어짐 등과 같은 일들이 발생할 수 있다.
이런 상황은 설치된 앱이나 실행 중인 앱이 반드시 알아야 할 매우 중요한 정보가 많다.
-> 전화가 걸려온다면 전화를 받는 앱이 실행해야하고, 배터리가 부족하면 실행중인 앱들은 중요한 정보를 미리 저장해야 하기 때문
기본 동작
안드로이드는 시스템에서 벌어지는 일 중 앱들이 알아야 할 상황이 발생하면 방송해주고 앱둘은 수신기를 통해 해당 상황을 감지할 수 있다.
시스템이 방송한 정보를 수신할 수 있는 수신기가 바로 브로드캐스트 리시버 컴포넌트다.
Broadcast -> Event, Receiver -> Event calback function or event handler
1. 시스템 뿐만 아니라 각종 앱들이 원하는 상황을 방송할 수 있다.
2. 앱은 자신이 관심 있는 수신자를 미리 달아두고, 원하는 방송이 흘러나오면 그에 맞는 처리를 수행함
정적 리시버는 한 번 등록하면 해제할 수 없고 동적 리시버는 등록과 해제가 자유롭다
Androidmanifest.xml에 등록하는 방법
4대 컴포넌트이기 떄문에 <application> 요소 하위에 <receiver> 요소를 추가해야 함.
액티비티와 동등한 레벨로 추가해야 함.
BroadcastReceiver 클래스를 상속받는다.
onReceive 함수만 재정의하면 끝난다. 즉, 원하는 방속을 받으면 onReceive 함수가 호출된다.
onReceive 함수는 메인스레드에서 실행된다. 따라서, UI 출력을 구현할 수 있다.
런타임으로 등록한다는 의미이다
시스템이 자동으로 등록하는 대신 개발자가 등록해야 한다.
액티비티의 생명 주기 내에서 unregisterReceiver 함수로 해제해야 함. 그렇지 않으면 앱 내에서 메모리 누수가 발생함
동적 리시버는 다른 컴포넌트에 귀속되기 때문에 다른 컴포넌트의 생명주기가 끝나면 동작하지 않는다.