LocalBroadcastManager란?
이 예제에서는 안드로이드에서 LocalBroadcastManager를 사용하는 방법을 단계별로 알아봅니다.
LocalBroadcastManager는 동일한 앱 프로세스 내부에서만 브로드캐스트를 주고받을 수 있도록 지원하는 유틸리티 클래스입니다. 시스템 전역 브로드캐스트와 달리 앱 외부로 데이터가 노출되지 않아 보안성이 뛰어나며, 프로세스 간 통신(IPC) 오버헤드가 없어 성능 면에서도 유리합니다.
1단계: 새 프로젝트 생성
Android Studio를 실행한 후 File ⇒ New Project 메뉴로 이동하고, 새 프로젝트 생성에 필요한 모든 세부 정보를 입력하여 새 프로젝트를 만듭니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:gravity = "center"
android:layout_height = "match_parent"
tools:context = ".MainActivity"
android:orientation = "vertical">
<TextView
android:id = "@+id/actionEvent"
android:textSize = "40sp"
android:layout_marginTop = "30dp"
android:layout_width = "wrap_content"
android:layout_height = "match_parent" />
</LinearLayout>위 코드에서는 브로드캐스트로 전달된 값을 화면에 표시하기 위해 TextView 하나를 배치했습니다.
3단계: MainActivity 코드 작성
src/MainActivity.java 파일에 다음 코드를 추가합니다.
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView actionEvent;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("custom-action-local-broadcast"));
actionEvent = findViewById(R.id.actionEvent);
actionEvent.setText("Click");
actionEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("custom-action-local-broadcast");
intent.putExtra("name","Tutorialspoint.com");
LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);
}
});
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Intent에 포함된 추가 데이터 가져오기
String message = intent.getStringExtra("name");
actionEvent.setText(message);
}
};
}위 코드의 핵심 흐름은 다음과 같습니다.
- 수신자 등록: onCreate()에서 registerReceiver()를 호출해 "custom-action-local-broadcast"라는 액션을 수신할 BroadcastReceiver를 등록합니다.
- 브로드캐스트 전송: TextView를 클릭하면 Intent에 "name"이라는 키로 데이터를 담아 sendBroadcast()로 전송합니다.
- 결과 수신: onReceive()에서 전달받은 데이터를 추출해 TextView의 텍스트를 변경합니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하세요. 옵션 목록에서 자신의 모바일 기기를 선택하면, 기기에 아래와 같은 기본 화면이 표시됩니다.

이제 화면의 TextView를 클릭하면 브로드캐스트로 전달된 데이터가 반영되어 아래와 같은 결과가 표시됩니다.

참고 사항
LocalBroadcastManager는 현재 안드로이드 제트팩(Jetpack)에서 공식적으로 지원 중단(deprecated)된 상태입니다. 최신 프로젝트에서는 LiveData, Kotlin Flow, EventBus 등의 대안을 사용하는 것이 권장됩니다. 다만 레거시 코드 유지보수나 브로드캐스트 개념 학습에는 여전히 좋은 예제가 됩니다.