본문 바로가기
앱개발/안드로이드

브로드캐스트 리시버(BroadcastReceiver)

by ironwoong 2013. 11. 30.
반응형

만약 애플리케이션이 전화가 오거나 문자메시지 수신과 같은 이벤트를 받거나 반응하기를 원한다면

반드시 브로드캐스트 리시버 로서 등록되어 있어야만 한다. 애플리케이션은 두가지 방법으로 인텐트의 수신에

필요한 처리를 수행한다.

애플리케이션은 브로드캐스트 리시버(BroadcastReceiver)의 클래스 이름과 인텐트필터들이 기술되어있는

AndroidMainfest.xml 파일 안에 <reciever> 태그를 통해 구현할수있다.

인텐트 필터는 애플리케이션이 실행시키고자 하는 인텐트의 기술자임을 기억하자. 만약 수신자가 AndroidMainfest.xml

파일에 등록되어 있다면 따로 실행되지 않아도 된다. 이벤트가 발생하면 애플리케이션은 자동으로 트리거링 이벤트를 

보내주기 때문이다. 이모든 것은 안드로이드가 스스로 처리해주는 기능들이다.

애플리케이션은 Context 클래스의 registerReceiver 메서드를 통해서 런타임에 등록이 될수도있다.

서비스와 마찬가지로, 브로드캐스트 리시버 역시 UI를 갖지 않는다. 이보다 중요한 특징은 브로드 캐스트 리시버의

OnReceiver 메서드다 만약 브로드캐스트 리시버가 많은 양의 코드를 처리해야 한다면 차라리 요청된 기능을 처리하기

위한 서비스를 호출하는 것을 권장한다. 

브로드캐스트 리시버는 수신 인텐트 작업을 진행기 위하여 추상화 메서드인 onReceive를 구현 한다. 이메서드를 사용하는데

필요한 인자들은 Context와 Intent 이다.

이메서드는 보통 리턴값이 없지만, 메서드를 호출하여 얻을수있는 이점은 수행 결과 값을 받아 볼수있다는 것인데,

setResult와 같이 호출자에게 정수 값을 넘겨주거나, 문자열(String)이나 번들(Bundle)형태뿐 아니라 오브젝트의

개수도 리턴할수 있다.


import android.content.Context;

import andorid.content.Intent;

import android.content.IntentReceiver;

import android.util.Log;


public class MySMSMailBox extends BroadcastReceiver {

public static final String tag = "MySMSMailBox";


@Override

public void onReceive(Context context, Intent intent) {

Log.i(tag,"onReceive");

if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {

Log.i(tag,"Found our Event!");

}

}



반응형

'앱개발 > 안드로이드' 카테고리의 다른 글

자바 퍼스펙티브(Java Perspective)  (0) 2013.12.02
안드로이드 활성화  (0) 2013.11.30
안드로이드 애플리케이션 개발 시작  (1) 2013.11.29
안드로이드의 토대  (0) 2013.11.29
안드로이드 스택(Stack)  (0) 2013.11.29

댓글