일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 한달어스
- 베드테이블
- 한달브런치북만들기
- 소프시스
- 캐치마인드
- 북한살둘레길
- 커스텀린트
- 면접
- 안드로이드
- 베드트레이
- 지지않는다는말
- 어떻게 나답게 살 것인가
- 한달독서
- 리얼하다
- 재택근무
- 프래그먼트
- 테트리스
- 끝말잇기
- 1일1커밋
- 아비투스
- T자형인재
- 함수형 프로그래밍
- 슬기로운 온라인 게임
- 좌식테이블
- 목적 중심 리더십
- 소프시스 밤부 좌식 엑슬 테이블
- 자취필수템
- 목적중심리더십
- 브런치작가되기
- 한단어의힘
- Today
- Total
정상에서 IT를 외치다
[Android] LocalBroadcastManager 사용법 본문
안드로이드에는 4가지 컴포넌트가 있습니다.
1. 엑티비티(Activity)
2. 서비스(Service)
3. 방송수신자(Broadcast Receiver)
4. 콘텐트 제공자(Content provider)
3번 방송수신자에서 LocalBroadcastManager 사용법에 대해 알아보겠습니다.
* Global Broadcast
- 일반적으로 이야기하는 Broadcast 이다. 프로세스 간의 경계를 무시하고 안드로이드 시스템 상에 등록된 모든 Receiver 들에게 전달된다.
* Local Broadcast
- 현재 프로세스 안에만 유효한 Broadcast 이다. 엑티비티 내부 객체간의 상호 의존성을 낮추어 깔끔한 프로그램 구조를 만들 수 있고 우리 앱의 정보를 밖으로 유출 하지 않는다.
LocalBroadcastManager 는 Loacal Broadcast 입니다.
1. 응답을 받아 처리할 부분(MainActivity)에 BroadcastReceiver 을 설정해 줍니다.
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// intent ..
}
};
그리고 해당 리시버를 아래 코드와 같이 MainActivity 의 onCreate 부분에 연결해 줍니다.
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver,
new IntentFilter("blackJinData"));
이때 IntentFilter 이름을 사용하는 용도에 맞춰서 적으시면 됩니다.
저는 'blackJinData' 라고 하겠습니다.
@Override
protected void onDestroy() {
super.onDestroy();
LocalBroadcastManager.getInstance(this).unregisterReceiver(mBroadcastReceiver);
}
onCreate 에 리시버를 연결해 줬으니깐 onDestroy 에서는 리시버를 해체해 줍니다.
2. 해당 리시버를 발동 시키기 위해서는
Intent intent = new Intent("blackJinData");
intent.putExtra("data1", "black");
intent.putExtra("data2", "Jin");
intent.putExtra("data3", "Data");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
위와 같이 리시버에 설정해 두었던 "blackJinData" 라는 이름의 Intent 와 보내고 싶은 데이터들을
넣어서 보내면 mBroadcastReceiver 의 onReceive 에서 받아 처리할 수 있습니다.
intent 에 data1, data2, data3 를 넣어서 보냈습니다.
그럼 1번에서 mBroadCastReceiver 을
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// intent ..
String data1 = intent.getStringExtra("data1");
String data2 = intent.getStringExtra("data2");
String data3 = intent.getStringExtra("data3");
}
};
위와같이 설정하면
black Jin Data 라는 3개의 데이터가 들어오는 것을 확인할 수 있습니다.
[MainActivity::onReceive]data1 : black , data2 : Jin , data3 : Data
이렇게 BroadcastReceiver 을 사용하여 각기 다른 화면 에서 정보를 전달하거나 함수를 실행할 수 있습니다.
'안드로이드' 카테고리의 다른 글
[Android, EventBus] 이벤트 버스 사용법 (2) | 2018.04.18 |
---|---|
[Android, BroadcastReceiver] BroadcastReceiver 사용법 (0) | 2018.04.14 |
[Android, SimpleDataFromat, Joda-Time ] 시간 함수 사용하기 (0) | 2018.04.12 |
[Android, 인증서] 안드로이드 인증서 가져오기 (0) | 2018.04.05 |
[Android, 권한설정] 안드로이드 권한 설정 (0) | 2018.04.04 |