14-1 브로드캐스트 리시버

StrayCat·2022년 12월 9일
0

브로드 캐스크 리시버

  • 이벤트 모델로 실행되는 컴포넌트
  • 사용자 이벤트가 아닌 부팅 등의 시스템 이벤트가 발생할 경우 실행된다.
  • 생명주기 함수는 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?) {
            }
        } // receiver 객체 생성
        val filter = IntentFilter("ACTION_RECEIVER")
        registerReceiver(receiver, filter) // 리시버 등록
  • 위와같이 설정하면 시스템에서 리시버를 인식하게 되며, 필요하지 않을 경우 unregister을 통해 해제해줘야한다.
        unregisterReceiver(receiver)

리시버 실행

  • sendBroadcast() 함수로 인텐트를 전달하여 실행한다.
        val intent = Intent(this, MyReceiver::class.java)
        sendBroadcast(intent)
  • 액티비티와는 다르게 실행되는 리시버가 없다면 오류가 발생하지 않는다.
  • 해당하는 여러개의 앱이 있다면 목록에서 선택하는 액티비티와는 다르게, 리시버는 선택하지 않고 모두 실행된다.

0개의 댓글