티스토리 뷰

Android/Concept

[Android] Local Broadcast

ch4njun 2020. 11. 29. 02:51
반응형

Global Broadcast의 문제점?

Broadcast를 프로세스의 경계를 무시하고 안드로이드 시스템에 등록된 모든 Receiver에게 전달한다.

앱이 발생한 Broadcast의 정보를 다른 앱이 관찰 또는 감시할 수 있다.

(앱의 행위를 제3자가 알 수 있기 때문에 보안상 문제가 될 수 있다)

추가적으로 Receiver는 Broadcast가 전송될 때마다 리소스를 소비하기 때문에 시스템에 부하가 된다.

 

자기 앱내에서만 알 수 있는 Receiver와 Broadcast를 구현하고 싶다.

 

만약 유명한 Application에서 내부에서 Broadcast보내는 것을 Global Broadcast로 사용하게 되면, 악성 앱을 생성해 유명한 Application에서 보내는 Broadcast를 받도록 할 수 있고, 그 내부에 존재하는 민감한 정보를 확인할 수 있는 보안상의 문제가 있을 수 있다는 말이다.

 

 


Local Broadcast

Broadcast를 발생시킨 앱 밖으로 방송을 하지 않는다. 앱 내부에 존재하는 Broadcast Receiver만이 이 Broadcast를 받아 이벤트를 발생시킬 수 있다.

 

Broadcast를 사용할 때 Action명을 정해서 사용할 경우 Local Broadcast를 사용하는게 좋을 듯하다.

 

Local Broadcast를 보내는 코드는 어떻게 작성하는지 살펴보자

Intent intent = new Intent();
intent.setAction("ch4njun_action");
LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(this);
// Singleton Pattern으로 구성되어 있고만..
broadcastManager.sendBroadcast(intent);
Intent intent = new Intent("ch4njun_action");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

 

그러면 이렇게 보내진 Local Broadcast 를 수신하는 방법을 살펴보자.

 

한가지 기억해야 할 것은 Local Broadcast는 동적 Broadcast Receiver로만 받을 수 있다는 것이다.

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("ch4njun_action");

BroadcastReceiver br = new BroadcastReceiver() {
	public void onReceive(Context context, Intent intent) {
    	...
    }
};

// 이게 register 과정을 대신하는 핵심코드~
LocalBroadcastManager.getInstance(this).registerReceiver(br, intentFilter);

 

 

그럼 이걸 도대체 어디다쓰냐... 뭐 이런생각이 스쳐지나간다. 어차피 같은 APP에서면 Broadcast를 안쓰는 방법이 더 낫지않나 뭐 이런생각..?

 

그래서 상황 하나를 적어놓고 넘어간다.

해당 App에서 Service Component가 존재한다고 했을 때, Service Component에서 Broadcase Receiver를 등록하고, 어떤 Broadcast가 넘어오냐에 따라서 Service의 동작을 달리하고 싶은 상황이 있을 수 있다.

예를 들면, Service가 음악을 백그라운드 재생해주는 역할을 수행하는데 Broadcast로 "PLAY" 데이터가 넘어오면 재생을, "PAUSE" 데이터가 넘어오면 정지를 수행할 수 있다는 뜻이다.
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함