5. Broadcast Receiver 사용하기
페이지 정보
작성자 관리자 댓글 0건 조회 2,610회 작성일 21-03-23 23:05본문
5. Broadcast Receiver 사용하기
안드로이드 컴포넌트중 하나인 Broadcast Receiver는 안드로이드에서 Observer 패턴으로 사용되는 컴포넌트중 하나이다.
이름과 같이 특정 코드블럭에서 sendBroadcast()라는 메서드로 메세지를 보내면 Broadcast Receiver 를 생성하여 등록한 앱에서는 해당 메세지를 받고 처리를 진행할수 있게 된다.
1. Broadcast Receiver 를 등록
Broadcast Receiver 를 등록하는 방법에는 2가지가 있는데 정적 등록, 동적등록의 방법으로 구분된다.
(1)정적등록
BroadcastReceiver를 상속받는 클래스 생성은 new -> other -> Broadcast Receiver로 만들면 된다.
Broadcast Receiver는 AndroidManifest.xml 파일에 <receiver> 라는 태그로 아래와 같이 등록할수 있다.
AndroidManifest에 <receiver> 로 등록시 이름은 BroadcastReceiver 클래스를 상속한 클래스의 이름으로 지정한다.
내부에 <intent-filter> 태그로 action을 정의하는데 해당 action으로 지정된 메세지를 수신하겠다는 의미이다.
시스템 패키지 매니저는 앱이 설치되면 BroadcastReceiver 를 등록하며, 앱이 실행중이지 않을때도 메세지를 받으면 메세지에 대해 동작이 가능하다.
(2) 동적등록
동적등록은 안드로이드의 Context가 유효할동안 동작한다. 즉 엑티비티 Context로 BroadcastReceiver를 등록한다면 Activity 가 Destroy될때까지 Receiver는 유효하다.
등록은 아래와같이 Context에서 제공하는 registerReceiver()를 사용하여 등록한다.
메세지를 수신시 등록된 Receiver의 onReceive() 메서드에서 수신 가능하다.
BroadcastReceiver가 더이상 필요하지 않을 경우 unregisterReceiver()메서드로 등록을 해제 해야한다.
2. 메세지를 보내는 방법
sendOrderBroadcast() 는 한번에 한 수신자에게만 메세지를 전달한다.
BroadcastReceiver를 따라 전파됨에 따라 다음 수신자에게 계속 메세지를 전달할수도, 또는 차단할수도 있다.
sendBroadcast()는 모든 수신자에게 메세지를 전파한다.
LocalBroadcastManager.sendBroadcast() 의 경우 송신자 내부 프로세스에서만 메세지를 전달한다.
해당 Broadcast message 를 앱 내부에서만 사용한다면 해당 메서드를 사용하는것이 효율적이다.
프로세스간 통신이 불필요하며 속도 및 보안적으로도 훨씬 더 유리한 방법이다.
무분별한 메세지 수신, 리소스 소모등의 원인으로 Android 8.0 Oreo 부터는 BroadcastReceiver의 기능이 제한 된다.
Android 8.0 이상의 SDK 를 지원하는 서비스는 아래 내용을 숙지하고 개발해야 한다.
백그라운드 실행 제한 | Android 개발자 | Android Developers
댓글목록
등록된 댓글이 없습니다.