BroadcastReceiver란?

장재용·2024년 5월 6일

BroadcastReceiver

안드로이드 4대 컴포넌트 중 하나로 ( 컴포넌트 : 앱 구성요소를 의미) 화면출력의 목적이 있는 Activity와는 달리 이벤트 모델로 실행되는 컴포넌트이다. ( 여기서 말하는 이벤트는 유저가 발생하는 이벤트가 아닌 시스템이 발생하는 이벤트를 말한다. )
BroadcastReceiver를 상속받은 클래스 작성.

class MyReciver : BroadcastReceiver() {
	override fun onReceive(context: Context, intent: Intent) {
    
    	}
    }

1. 정적 등록

브로드캐스트리시버도 컴포넌트다.
따라서 다른 컴포넌트와 같이 매니페니스트에 등록해줘야 한다.

<receiver
	android:name=".MyReceiver"
    android:enable="true"
    andorid:exported="true">
</receiver>

name 속성은 생략 불가능하다. 꼭 작성해야 함.

2. 동적 등록

그러나, 매니페스트에 등록시키지 않고 코드에서 필요할 때만 동적으로 등록도 가능하다. (자주 사용 하는 기법)

val receiver = object :  BroadcastReceiver(){
	override fun onReceive(context: Context?, intent: Intent?) {
    
    	}
    }
    
val filter = IntentFilter("ACTION_RECEIVER")
registerReceiver(receiver, filter) // 동적 등록
unregisterReceiver(receiver) // 등록 해제
sendBroadcast(intent)

차이점

정적 등록은 매니페스트에 작성하면 항상 해당 조건에 실행되고,
동적 등록은 필요한 경우에만 등록해서 이 경우에만 실행되게 하고 싶을 때 사용한다.

profile
enjoy_error_message!

0개의 댓글