브로드 캐스크 리시버
- 이벤트 모델로 실행되는 컴포넌트
- 사용자 이벤트가 아닌 부팅 등의 시스템 이벤트가 발생할 경우 실행된다.
- 생명주기 함수는 onReceive() 하나로, 자동으로 호출된다.
class MyReceiver : BroadcastReceiver(){
override fun onReceive(p0: Context?, p1: Intent?) {
}
}
<receiver android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
</receiver>
- 매니페스트에 등록하지 않고 동적으로 등록할 수 있다.
val receiver = object : BroadcastReceiver(){
override fun onReceive(p0: Context?, p1: Intent?) {
}
}
val filter = IntentFilter("ACTION_RECEIVER")
registerReceiver(receiver, filter)
- 위와같이 설정하면 시스템에서 리시버를 인식하게 되며, 필요하지 않을 경우 unregister을 통해 해제해줘야한다.
unregisterReceiver(receiver)
리시버 실행
- sendBroadcast() 함수로 인텐트를 전달하여 실행한다.
val intent = Intent(this, MyReceiver::class.java)
sendBroadcast(intent)
- 액티비티와는 다르게 실행되는 리시버가 없다면 오류가 발생하지 않는다.
- 해당하는 여러개의 앱이 있다면 목록에서 선택하는 액티비티와는 다르게, 리시버는 선택하지 않고 모두 실행된다.