본문 바로가기

Android

[안드로이드]BroadcastReceiver



만약, 애플리케이션이 전화가 오거나, 문자 메시지 수신과 같은 이벤트를 받거나 반응하기를 원한다면, 반드시 브로드캐스트 리시버로서 등록되어 있어야만 한다.

 

애플리케이션에서는 2가지 방법으로 인텐트의 수신에 필요한 처리를 수행한다.

 

1. 브로드캐스트리시버의 클래스명과 인텐트 필터들이 기술되어 있는 AndroidManifest.xml 파일 안에 <receiver>태그를 통해 구현할 수 있다.

인텐트 필터는 애플리케이션이 실행시키고자 하는 인텐트의 기술자임을 기억하자. 만약 수신자가 AndroidManifest.xml 파일에 등록되었다면 따로 실행하지 않아도 된다.

이벤트가 발생하면, 애플리케이션은 자동으로 트리거링(triggering) 이벤트를 보내주기 때문이다. 이 모든 것은 안드로이드가 스스로 처리해주는 기능들이다.

 

2. Context 클래스의 registerReceiver 메서드를 통해서 런타임에 등록이 될수도 있다.

 

브로드캐스트리시버의 onReceive메서드에서 실행되는 코드는 지속성 혹은 긴 작업 명령들에 대한 가정을 바탕으로 작성되어서는 안된다.

만약 브로드캐스트리시버가 많은 양의 코드를 처리해야 한다면, 차라리 요청된 기능을 처리하기 위한 서비스를 호출하는 것을 권장한다.

 

BroadCastReceiver 상속하여 onReceive(Context ctx, Intent it) 메서드를 오버하이딩 한다. 

이 메서드는 브로드캐스트리시버에서 발생하는 모든 작업이 수행되는 곳이므로 반드시 구현되어 있어야 한다.

브로드캐스트리시버는 여러 인텐트필터에 등록될수 있기 때문에 임의의 인텐트를 위하여 활성화되어 있을 수도 있다.