Broadcast/BroadcastReceiver
브로드캐스팅~
각각의 어플은 이 기능을 통해 자신의 상태를 공지하거나 특정 액션을 얻어올 수 있다.
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초이상 처리가 이루어지는 경우
해당 어플리케이션이 응답이 없다고 생각해 종료 시킬 수 있다.