반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 Broadcast Receiver 에 대해 간략하게 알아볼께요.
Broadcast Receiver 가 뭐야?
- 말 그대로 Broadcast, 방송을 듣는 녀석입니다.
누군가가 Intent 로 메세지를 보낸다는 것에 대해 receiver 를 등록해 놓으면 이 receiver 로 메세지가 수신됩니다.
void onReceive (Context context, Intent intent)
-> Broadcast가 수신되면 onReceive 메서드가 자동 호출됩니다.
!! BR은 메인 스레드에서 실행. 따라서 10초 이내로 return 해야 합니다.
아니면 system이 강제로 이 receiver를 죽이거나, ANR 이 발생합니다. !!
void sendBroadcast (Intent intent [, String receiverPermission])
void sendOrderedBroadcast (Intent intent, String receiverPermission)
-> permission 필요 없을 경우 null 전달
-> Broadcast 수신 순서는 android:priority 속성이 지정하는 중요도에 따라 수신 순서가 결정
예제코드를 줘봐요.
<Broadcast Sender>
Intent intent = new Intent();
intent.setAction( [Action Name] ); // Action name
sendBroadcast(intent);
<Broadcast Receiver>
public class BR_test extends BroadcastReceiver{
public void onReceive (Context context, Intent intent){
Intent intent2 = new Intent(context, .class);
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
}
<Manifest> - BroadcastReceiver 도 component 중 하나로 반드시 Manifest 에 등록해야만 합니다.
<receiver android:name = "BR.class">
<intent-filter>
<action android:name="action"/>
</intent-filter>
</receiver>
매니페스트가 아닌 코드로도 receiver 등록할 수 있다고 들었는데..
Intent registerReceiver (BroadcastReceiver receiver, IntentFilter filter)
void unregisterReceiver (BraodcastReceiver receiver)
-> BR 등록 최적의 시점은 onResume이며 등록 해제할 최적 시점은 onPause() 이다.
<Broadcast Sender>
<Broadcast Receiver>
Intent intent = new Intent();
intent.setAction("exam.service.savezone");
sendBroadcast(intent);
public class OnSaveZone extends Activity{
public void onResume(){
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("exam.service.savezone");
registerReceiver(mSaveZoneBR, filter);
}
public void onPause(){
super.onPause();
unregisterReceiver(mSaveZoneBR);
}
BroadcastReceiver mSaveZoneBR = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
// To Do
}
}
}
}
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] JSON Parser ( 제이슨 파서 ) (6) | 2012.02.18 |
---|---|
[android] Notification 에 대한 모든 것. (0) | 2012.02.18 |
[Android/안드로이드] Battery 상태 감시하는 방법. (0) | 2012.02.18 |
[Android/안드로이드] SD Card (External Storage) 상태 감시하는 방법. (1) | 2012.02.18 |
[Android/안드로이드] Alarm Service 에 대해 알아본다. (0) | 2012.02.18 |
댓글