안녕하세요! 이번 글에서는 안드로이드 앱 개발에 있어 중요한 특정 주제인 브로드캐스트 리시버(Broadcast Receiver)에 대해 자세히 알아보도록 하겠습니다. 브로드캐스트 리시버는 안드로이드에서 발생하는 다양한 시스템 이벤트를 수신하고 처리하기 위한 강력한 구성 요소입니다. 이러한 구성 요소를 효과적으로 이해하고 활용하는 것이 제대로 작동하는 앱을 만드는 데 큰 도움이 될 것입니다.
브로드캐스트 리시버란?
브로드캐스트 리시버는 안드로이드 시스템에서 발생하는 다양한 이벤트를 수신할 수 있는 컴포넌트입니다. 예를 들어, 시스템에서 전원 연결, 네트워크 변화, 부팅 완료 등의 이벤트가 발생할 때 이를 수신하여 적절한 작업을 수행할 수 있습니다. 이러한 이벤트는 “브로드캐스트” 형태로 전달되며, 여러 앱에서 동시에 수신할 수 있습니다.
브로드캐스트의 종류
- 전역 브로드캐스트(Global Broadcast): 모든 앱이 수신할 수 있는 브로드캐스트입니다. 예를 들어, 안드로이드 시스템이 부팅되었을 때 발생하는 ACTION_BOOT_COMPLETED 입니다.
- 앱 전용 브로드캐스트(App-Specific Broadcast): 특정 앱의 컴포넌트 간에만 전송되는 브로드캐스트입니다. 이러한 브로드캐스트는 해당 앱 내에서만 유효합니다.
브로드캐스트 리시버의 사용 예
브로드캐스트 리시버는 주로 다음과 같은 상황에서 사용됩니다:
- 시스템 이벤트 수신 (예: 전화 통화 수신, Wi-Fi 상태 변경 등)
- 앱의 데이터 처리 (예: 특정 작업 완료 후 다른 앱의 업데이트 요청)
- 앱의 상태 변화 (예: 사용자 로그아웃 시 알림 전송)
브로드캐스트 리시버 구현하기
이제 브로드캐스트 리시버를 구현하는 방법을 단계별로 살펴보겠습니다. 이번 예제에서는 배터리 상태가 변경될 때마다 해당 정보를 로그에 출력하는 간단한 브로드캐스트 리시버를 만들어 보겠습니다.
1. 브로드캐스트 리시버 클래스 생성
package com.example.broadcastrreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import android.util.Log;
public class BatteryReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale * 100;
Log.d("BatteryReceiver", "Battery level: " + batteryPct + "%");
}
}
2. AndroidManifest.xml에 리시버 등록
브로드캐스트 리시버는 AndroidManifest.xml 파일에 등록해야 시스템에서 해당 리시버를 인식할 수 있습니다. 배터리 상태 변경을 수신하기 위해 다음과 같이 설정합니다.
3. 앱에서 리시버 동작 확인
위의 설정이 완료되면, 앱을 설치하고 실행해 보세요. 이제 배터리 수준이 변경될 때마다 로그캣에서 배터리 수준이 출력되는 것을 확인할 수 있습니다.
브로드캐스트 리시버의 이점과 주의사항
브로드캐스트 리시버는 여러 가지 이점이 있지만, 사용할 때 몇 가지 주의사항도 있습니다.
- 이점:
- 다양한 시스템 이벤트를 손쉽게 수신 가능
- 앱의 리소스 및 이벤트 처리를 중앙 집중화
- 주의사항:
- 태생적으로 비동기적이므로 상황에 따라 리소스 누수 문제 발생 가능
- 정상적인 동작을 위해 필요한 권한을 올바로 설정해야 함
전역 브로드캐스트와 앱 전용 브로드캐스트 비교
전역 브로드캐스트와 앱 전용 브로드캐스트 간의 주요 차이점은 수신 범위에 있습니다. 전역 브로드캐스트는 모든 앱에서 수신할 수 있는 반면, 앱 전용 브로드캐스트는 특정 앱 내에서만 수신 가능합니다. 예를 들어, 아래와 같이 앱 전용 브로드캐스트를 구현할 수 있습니다.
Intent intent = new Intent("com.example.broadcastrreceiver.MY_NOTIFICATION");
sendBroadcast(intent);
앱 전용 브로드캐스트 리시버 등록
결론
브로드캐스트 리시버는 안드로이드 앱 내에서 중요한 역할을 하는 컴포넌트입니다. 이를 통해 시스템 이벤트를 효과적으로 수신하고 처리할 수 있으며, 앱의 리소스를 보다 효율적으로 관리할 수 있습니다. 본 강좌를 통해 브로드캐스트 리시버의 기본 개념과 사용법, 예제를 살펴보았으며, 이를 통해 다양한 시스템 이벤트를 수신하는 방법에 대한 구체적인 이해를 도왔으면 합니다.
안드로이드 개발을 계속하면서 브로드캐스트 리시버를 더욱 다양한 상황에 맞게 활용해 보시기 바랍니다. 다음 강좌에서는 다른 안드로이드 컴포넌트인 서비스에 대해 자세히 알아보겠습니다.