[Android] Android Receiver
Updated:
Broadcast Receiver
- UI가 없다. -> 알림을 위해선 dialogue box, toast, notification 등 이용.
- 객체를 직접 생성해서 쓰는 게 가능하다. -> Manifest 파일에 등록하지 않아도 됨!
- 생명주기 메서드
- onReceive()
- 백그라운드 대기 -> intent 호출 시 동작
-
resource가 부족한 경우 직접 kill 가능
- 생성 방법
New>Other>Broadcast Receiver
- Broadcast Receiver 클래스를 생성하면 Manifest에 자동으로 추가된다.
<!-- Broadcast Receiver 파일 생성 시 자동 등록 -->
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true" />
Broadcast Receiver의 호출 방식
(1) 명시적
MyReceiver
String str = intent.getStringExtra("str");
int num = intent.getIntExtra("num", 0);
Toast.makeText(context, "str: " + str + " / num: " + num, Toast.LENGTH_SHORT).show();
MainActivity
public void onBtn1(View view) {
// 호출할 receiver의 이름을 직접 부른다.
Intent intent = new Intent(this, MyReceiver.class);
intent.putExtra("str", "aaa");
intent.putExtra("num", 10);
sendBroadcast(intent);
}
(2) 묵시적
Manifest 파일의 MyReceiver2에 대한 Receiver 태그를 지운다.
MyReceiver2
Toast.makeText(context, "implicit activation to receiver", Toast.LENGTH_SHORT).show();
MainActivity
- 멤버 변수
// 묵시적 호출 시 실행할 action (따로 정해져 있는 게 아니라 직접 정의)
public final String ACTION = "com.example.receivertest.MyAction";
- onCreate
// broadcast receiver 객체 생성
MyReceiver2 br = new MyReceiver2();
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION);
registerReceiver(br, filter);
- 실행
public void onBtn2(View view) {
Intent intent = new Intent(ACTION);
sendBroadcast(intent);
}
Leave a comment