Broadcast Receiver

·2021년 11월 8일
0

안드로이드

목록 보기
13/17

Broadcast Receiver

용도
전화가 걸려오거나 배터리 부족, 네트워크 끊어짐 등과 같은 일들이 발생할 수 있다.
이런 상황은 설치된 앱이나 실행 중인 앱이 반드시 알아야 할 매우 중요한 정보가 많다.
-> 전화가 걸려온다면 전화를 받는 앱이 실행해야하고, 배터리가 부족하면 실행중인 앱들은 중요한 정보를 미리 저장해야 하기 때문
기본 동작
안드로이드는 시스템에서 벌어지는 일 중 앱들이 알아야 할 상황이 발생하면 방송해주고 앱둘은 수신기를 통해 해당 상황을 감지할 수 있다.
시스템이 방송한 정보를 수신할 수 있는 수신기가 바로 브로드캐스트 리시버 컴포넌트다.
Broadcast -> Event, Receiver -> Event calback function or event handler


1. 시스템 뿐만 아니라 각종 앱들이 원하는 상황을 방송할 수 있다.
2. 앱은 자신이 관심 있는 수신자를 미리 달아두고, 원하는 방송이 흘러나오면 그에 맞는 처리를 수행함

방송

정적 리시버

정적 리시버는 한 번 등록하면 해제할 수 없고 동적 리시버는 등록과 해제가 자유롭다

Androidmanifest.xml에 등록하는 방법

4대 컴포넌트이기 떄문에 <application> 요소 하위에 <receiver> 요소를 추가해야 함.
액티비티와 동등한 레벨로 추가해야 함.

리시버 클래스

BroadcastReceiver 클래스를 상속받는다.
onReceive 함수만 재정의하면 끝난다. 즉, 원하는 방속을 받으면 onReceive 함수가 호출된다.
onReceive 함수는 메인스레드에서 실행된다. 따라서, UI 출력을 구현할 수 있다.

동적 리시버

런타임으로 등록한다는 의미이다
시스템이 자동으로 등록하는 대신 개발자가 등록해야 한다.

동적 리시버의 해제

액티비티의 생명 주기 내에서 unregisterReceiver 함수로 해제해야 함. 그렇지 않으면 앱 내에서 메모리 누수가 발생함
동적 리시버는 다른 컴포넌트에 귀속되기 때문에 다른 컴포넌트의 생명주기가 끝나면 동작하지 않는다.

profile

0개의 댓글