Broadcast Receiver
Broadcast는 어떤 행위에 대한 알림을 받고 방송을 해주는 기능입니다. 이 방송은 Intent를 통해 발송하게 되고, 이렇게 발송된 방송은 Broadcast Receiver 객체가 수신을 하게 됩니다.
Broadcast Receiver를 구현하는 방법에는 Manifest에 리시버를 선언하거나, Context에 직접 리시버를 구현하는 두 가지 방법이 존재합니다.
수신대상의 패키지, 클래스명을 입력하는 명시적 브로드캐스트나 몇 가지의 암시적 브로드캐스트 예외(링크)를 제외하고는 모두 Context에 직접 리시버를 구현해야 합니다.
- Manifest에 등록 : 앱이 실행 중이 아니여도 이벤트를 수신하고 작업을 처리할 수 있습니다.
- Context에 등록 : 앱이 실행 중일 때만 이벤트를 수신하고 작업을 처리할 수 있습니다.
Broadcast Receiver 구현하기
1. 브로드캐스트 리시버 클래스 생성
BroadcastReceiver 클래스를 상속받아 클래스를 생성합니다.
class MyBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
// intent의 action에 따라 다르게 동작
when (intent.action) {
Intent.ACTION_BATTERY_LOW -> {
Toast.makeText(context, "배터리가 부족합니다.", Toast.LENGTH_SHORT).show()
}
// ...
}
}
}
2. 브로드캐스트 리시버 등록
- Manifest에 등록
<application>
// ...
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
</receiver>
// ...
</application>
- Context에 등록
val reciver = MyBroadcastReceiver()
val filter = IntentFilter().apply {
addAction(Intent.ACTION_BATTERY_LOW)
}
registerRecevier(receiver, filter) // 동적으로 시스템에 등록
unregisterReveiver(receiver) // 등록 해제
3. 브로드캐스트 리시버 실행
sendBroadcast() 메서드를 통해 시스템에서 브로드캐스트 객체를 생성하여 리시버를 실행합니다.
val intent = Intent(this, MyBroadcastReceiver::class.java)
sendBroadcast(intent)
728x90
반응형
'안드로이드 > 개념' 카테고리의 다른 글
[Android] Touch (0) | 2023.10.06 |
---|---|
[Android] @JvmOverloads (0) | 2023.08.06 |
[Android] Service (0) | 2023.08.01 |
[Android] sealed class (0) | 2023.07.30 |
[Android] 런타임 권한 요청하기 (0) | 2023.07.28 |