https://developer.android.com/develop/background-work/background-tasks/broadcasts?hl=ko

 

브로드캐스트 개요  |  Background work  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 브로드캐스트 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 앱은 게시-구독 디자인 패턴

developer.android.com

 

Android 시스템 및 다른 Android 앱에서 브로드캐스트 메시지를 보내거나 받을 수 있습니다. 

  • Android 시스템은 시스템이 부팅될 때 ,
  • 기기가 충전을 시작할 때,
  • 시스템이 비행기 모드로 전환하거나 비행기 모드를 해제할 때 등

      --> 다양한 시스템 이벤트가 발생할 때 브로드캐스트를 전송합니다. 

 

앱은 특정 브로드캐스트를 수신하도록 등록할 수 있습니다. 브로드캐스트가 전송되면 시스템은 특정 유형의 브로드캐스트를 수신하도록 구독한 앱에 브로드캐스트를 자동으로 라우팅합니다.

 

 

1. Broadcast Receiver 생성

Manifest 파일에도 <receiver> 가 추가된 것을 확인할 수 있다. 

공식 홈페이지에서도 확인할 수 있듯이 앱의 매니페스트에서 intent-filter를 작업할 수도 있다.

<!-- If this receiver listens for broadcasts sent from the system or from
     other apps, even other apps that you own, set android:exported to "true". -->
<receiver android:name=".MyBroadcastReceiver" android:exported="false">
    <intent-filter>
        <action android:name="APP_SPECIFIC_BROADCAST" />
    </intent-filter>
</receiver>

 

이 방법 외에 서비스에 직접 리시버를 만들고 등록하는걸로 작업하기로.

 

예제에서는 배터리가 낮을때임.

 

서비스 파일에서

// 리시버 선언
private val receiver = LowBatteryReceiver()


// onCreate 에서 리시버 불러오기
...
initReceiver()



// 리시버 초기화 함수
private fun initReceiver() {
    val filter = IntentFilter().apply {
        addAction(Intent.ACTION_BATTERY_LOW)
    }
    registerReceiver(receiver, filter)
}



// onDestroy 에서 레지스터 해제
unregisterReceiver(receiver)

 

 

 

생성시켰던 Broadcast Receiver 파일에서 작업을 처리해줄 수 있다.

onReceive 에서

// 배터리가 낮을때 토스트 메세지 띄워주기
when(intent.action){
            Intent.ACTION_BATTERY_LOW ->{
                Toast.makeText(context, "배터리가 부족합니다.", Toast.LENGTH_SHORT).show()
            }
        }

 

 

%%%%%%% build.gradle 에 디펜던시가 추가돼있는지 확인해보기 ( 위 구글 링크  참고)

dependencies {
    val core_version = "1.12.0"

    // Java language implementation
    implementation("androidx.core:core:$core_version")
    // Kotlin
    implementation("androidx.core:core-ktx:$core_version")
    ...

+ Recent posts