Broadcast Receiver
14 May 2019 | android programming thread handlerBroadcast Receiver
방송 수신자이고 이벤트 발생시 방송을 해준다. 이렇게 방송된 이벤트는 각 앱에서 필요한 방송 이벤트를 받아들일 수 있고, 이벤트에 대한 처리를 리시버를 통해서 한다.
방송 보내기
Intent intent = new Intent("com.ran.myapplication.SEND_BROAD_CAST"); intent.putExtra("boolValue", true); intent.putExtra("intValue", 123); intent.putExtra("stringlValue", "Intent String"); sendBroadcast(intent);
방송 받기
리시버에는 정적리시버와 동적리시버가 있다. 정적 리시버는 한번 등록하면 해제할 수 없다.
정적 리시버는 AndroidManifest.xml에 등록해야 한다.
리시버 클래스는 BroadcastReceiver를 상속받고 onReceive에서 Intent를 받아서 처리한다.
public void onReceive(Context context, Intent intent) { String name = intent.getAction(); if(name.equals("com.ran.myapplication.SEND_BROAD_CAST")) { String value = intent.getStringExtra("stringValue")); } }
동적 리시버는 등록와 해제가 자유롭다. AndroidManifest.xml에 추가로 입력 할 사항이 없다.
IntentFilter intentfilter = new IntentFilter(); intentfilter.addAction("com.ran.myapplication.SEND_BROAD_CAST"); BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String string = intent.getStringExtra("stringValue"); Log.d(TAG, string); } } registerReceiver(receiver, intentFilter); unregisterReceiver(receiver); // 해제해야 할 때 반드시 호출