프로그래밍/Android

Broadcast/BroadcastReceiver

chance 2009. 11. 11. 18:24

브로드캐스팅~

 

각각의 어플은 이 기능을 통해 자신의 상태를 공지하거나 특정 액션을 얻어올 수 있다.

 

1. 전송할 액션 설정 : String 으로 패키지명을 포함해 임의로 지정한다.

public static final String MY_ACTION = "kr.package.action.MY_ACTION"

 

2. 전송할 인텐트를 정의한다.(어느녀석이 받아서 처리할지 모르므로 묵시적 호출)

Intent intent = new Intent( MY_ACTION , Uri.parse(""));

추가정보도 필요하면 넣고~

intent.putExtra("value", value );

 

3. 브로드캐스팅으로 전송

sendBroadcast( intent );

 

 

 

 

* 브로드캐스트 리시버

BroadcastReceiver 를 상속받아 onReceive 메쏘드를 오버라이드 해주면 끝~

public class MyReceiver extends BroadcastReceiver {

 

}

 

* 리시버의 intent-filter 설정

Intent 포스트에서 언급한바와 같이 묵시적 intent 설정을 사용하는경우

해당 액션,카테고리,데이터를 수신하기 위한 필터를 설정해야 한다.

방법은 manifest에 추가하거나 코드에서 동적으로 선언할 수 있다.

 

<intent-filter>

<action android:name="kr.package.action.MY_ACTION"/>

<category ... />

<data ... />

</intent-filter>

 

또는

 

IntentFilter filter = new IntentFilter( MY_ACTION );

MyReceiver receiver = new MyReceiver();

registerReceiver( receiver, filter );

 

* 리시버 해제

unregisterReceiver();

 

 

 

 

* 주의

onReceiver는 다른 서비서나 액티비티에서도 동일하게 이벤트를 수신하는 녀석들이라

특정시간동안 처리를 지연시켜서는 안된다~ 만약 5초이상 처리가 이루어지는 경우

해당 어플리케이션이 응답이 없다고 생각해 종료 시킬 수 있다.