BroadcastReceiver란?
BroadcastReceiver는 안드로이드 애플리케이션 개발에서 중요한 컴포넌트 중 하나로, 애플리케이션 간에 메시지를 주고받을 수 있는 역할을 합니다.
또한 이벤트에 대한 알림을 수신하고, 해당 이벤트에 대한 처리를 담당합니다.
이벤트는 시스템에서 발생할 수도 있고, 애플리케이션 내에서 사용자 정의된 이벤트일 수도 있습니다.
BroadcastReceiver는 이벤트를 동적으로 수신하거나 AndroidManifest.xml 파일에 정적으로 등록하여 사용할 수 있습니다.
BroadcastReceiver를 사용하는 이유
BroadcastReceiver를 사용하는 이유는 다음과 같습니다.
이벤트 기반 애플리케이션
BroadcastReceiver는 이벤트 기반 애플리케이션 개발에 필수
예를 들어, 알람이 울리거나 SMS가 도착했을 때 알림을 받아야 하는 경우 BroadcastReceiver를 사용하여 이벤트를 감지하고 적절한 동작을 수행할 수 있음
시스템 레벨 이벤트 수신
BroadcastReceiver는 시스템 레벨에서 발생하는 다양한 이벤트를 수신할 수 있음
예를 들어, 단말기가 부팅되었을 때 알림을 받거나, 네트워크 상태 변경을 감지하는 등의 작업을 수행할 수 있음
애플리케이션 간 통신
BroadcastReceiver는 애플리케이션 간에 통신을 가능토록 함
한 애플리케이션이 브로드캐스트 메시지를 보내면, 다른 애플리케이션에서 해당 메시지를 수신하여 적절한 동작을 수행할 수 있음
BroadcastReceiver manifest 설정 예제
BroadcastReceiver를 사용하기 위해서는 AndroidManifest.xml 파일에 해당 컴포넌트를 등록해야 합니다.
아래는 BroadcastReceiver를 등록하는 예제입니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application ...>
...
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="com.example.myapp.MY_ACTION" />
</intent-filter>
</receiver>
...
</application>
</manifest>
위의 예제에서는 MyBroadcastReceiver라는 이름의 BroadcastReceiver를 등록하였습니다.
android.intent.action.BOOT_COMPLETED와 com.example.myapp.MY_ACTION 두 가지 액션을 필터로 설정하였으므로, 시스템 부팅 완료 및 사용자 정의 액션을 수신할 수 있습니다.
Broadcast 전송 예제
Broadcast를 전송하기 위해서는 sendBroadcast() 메서드를 사용해야 합니다.
아래는 Broadcast를 전송하는 예제입니다.
Intent intent = new Intent();
intent.setAction("com.example.myapp.MY_ACTION");
intent.putExtra("message", "Hello, world!");
sendBroadcast(intent);
위의 예제에서는 com.example.myapp.MY_ACTION 액션을 가진 Broadcast를 전송하고 있습니다.
추가적으로 "message"라는 키로 "Hello, world!"라는 문자열을 전달하고 있습니다.
Broadcast 수신 예제
Broadcast를 수신하기 위해서는 BroadcastReceiver를 구현해야 합니다.
아래는 Broadcast를 수신하는 예제입니다.
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("com.example.myapp.MY_ACTION")) {
String message = intent.getStringExtra("message");
Toast.makeText(context, "Received message: " + message, Toast.LENGTH_SHORT).show();
}
}
}
위의 예제에서는 MyBroadcastReceiver라는 BroadcastReceiver를 구현하고 있습니다.
onReceive() 메서드에서 수신한 액션을 확인하고, 필요한 동작을 수행하고 있습니다.
예를 들어, "com.example.myapp.MY_ACTION" 액션을 수신한 경우에는 "message"라는 추가 데이터를 추출하여 토스트 메시지로 출력하고 있습니다.