안드로이드 4대 컴포넌트 중에 하나이다. 말 그대로 방송 수신자이며 시스템이나 앱 등에서 이벤트 발생시 방송을 해주는 개념이다. 이렇게 방송된 이벤트는 각 앱에서 필요한 방송 이벤트를 받아들이고 이벤트에 대한 처리를 리시버를 통해 할 수 있게 해준다.
SendBroadCast 방송 보내기
SendBroadcast라는 Context에 포함된 함수를 이용하여 인텐트를 전달한다. Intent에 putExtra를 통해 Integer, boolean, String 등 여러 단일 타입 또는 배열의 혈태로 전달 할 수 있다.
Intent sendIntent = new Intent("com.dwfox.myapplication.SEND_BROAD_CAST");
sendIntent.putExtra("isBoolean", true);
sendIntent.putExtra("sendInteger", 123);
sendIntent.putExtra("sendString", "Intent String");
sendBroadcast(sendIntent);
Receiver 방송 받기
SendBroadcast를 통해 전달된 Intent를 수신하는 리시버(Receiver)를 구현하여야 한다. 리시버에는 정적리시버와 동적 리시버가 있다.
정적 리시버 : 한 번 등록하면 해제할 수 없다.
정적리시버는 AndroidManifest.xml에서 recevier를 등록하여 사용하도록 한다. 아래와 같이 리시버를 사용할 클래스와 intent Action name을 등록한다.
<receiver android:name=".TestReceiver">
<intent-filter>
<action android:name="com.dwfox.myapplication.SEND_BROAD_CAST"/>
</intent-filter>
</receiver>
브로드캐스트 리시버 (BroadcastReceiver) 클래스를 구현하여 수신 처리를 등록한다.
public class TestReceiver extends BroadcastReceiver {
private static final String TAG = TestReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
String name = intent.getAction();
// Intent SendBroadCast로 보낸 action TAG 이름으로 필요한 방송을 찾는다.
if(name.equals("com.dwfox.myapplication.SEND_BROAD_CAST ")){
Log.d(TAG, "BroadcastReceiver :: com.dwfox.myapplication.SEND_BROAD_CAST :: "
+ intent.getStringExtra("sendString")); // putExtra를 이용한 String전달
}
}
}
동적 리시버 : 등록과 해제가 자유롭다.
정적리시버와는 달리 AndroidManifest.xml에 추가로 입력 할 사항이 없다.
public class TestActivity extends Activity {
private static final String TAG = ReceiverVideoFinish.class.getSimpleName();
BroadcaastReceiver mReceiver;