[Android][study] 브로드캐스트 리시버 컴포넌트 - 1

Intelli·2022년 11월 28일
0

이 글은 『Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린』 교재를 바탕으로 작성되었습니다.

14 -1 브로드캐스트 리시버 이해하기


1. 브로드캐스트 리시버란?

  • 브로드캐스트 리시버는 시스템의 특정한 상황에서 실행되는 컴포넌트이다.
  • 시스템의 특정한 상황이란 부팅이 완료되는 것이나 화면이 꺼지거나 켜졌을 때를 의미한다.

2. 브로드캐스트 리시버 만들기

class MyReceiver: BroadcastReceiver() {
	override fun onReceive(context: Context, intent: Intent) {
    	//실행될 내용
    }
} 
  • 브로드캐스트 리시버의 생명주기 함수는 onReceive() 하나이다.
  • onReceive() 함수는 실행 후 10초 이내 완료를 권장

3. 매니페스트 파일에 브로드캐스트 리시버 등록

<receiver
	android: name=".MyReceiver"
    android: enabled="true"
    android: exported="true"></receiver>
  • name은 필수 receiver의 필수 속성이다.

4. 객체를 생성하여 브로드캐스트 리시버 동적 등록

  1. 브로드캐스트 리시버 객체 생성
val receiver = object: BroadcastReceiver() {
	override fun onReceive(context: Context?, intent: Intent?) {
    //실행될 내용
    }
}
  1. 리시버 동적 등록
val filter = IntentFilter("ACTION_RECEIVER")
registerReceiver(receiver, filter)
  1. 브로드캐스트 리시버 해제 함수
unregisterReceiver(receiver)

5. 브로드캐스트 리시버 실행

val intent = Intent(this, MyReceiver::class.java)
sendBroadcast(intent)
  • 매니페스트 파일에 등록하지 않고 클래스만 생성한 경우

    • 클래스 타입 레퍼런스를 이용해 명시적 인텐트로 실행
    • 인텐트 필터를 이용하여 암시적 인텐트로 실행
  • 매니페스트 파일에 등록한 경우

    • 인텐트 필터를 사용하였어도 암시적 인텐트로 실행할 수 없다.

6. 리시버와 액티비티 비교

  • 리시버는 액티비티와 다르게 sendBroadcast()에 인자로 넘겨준 인텐트에 해당하는 인텐트가 없거나 여러개여도 오류가 발생하지 않는다.
profile
I never dreamed about success. I worked for it.

0개의 댓글