티스토리 뷰

* 참고 포스트 

https://salguworld.tistory.com/75 

 

안드로이드 부팅시 서비스 자동 실행(Android Booting Service)

안드로이드 관련 포스팅 목록 2020/07/07 - [Android] - 안드로이드 서비스 등록/실행(Service Intent) 2020/07/06 - [Android] - 안드로이드 WIFI 연결 상태 확인(Android Wifi, Connected) 2020/06/23 - [Android] - 안드로이드

salguworld.tistory.com

(자바로 개발하시는 분들은 위 포스트를 참고해주세요.)

 

이번에 안드로이드 앱을 제작할 일이 생겨서 여러가지를 알아보는데 

생각보다 여러가지 기능이 필요하더라고요;;

 

그중에 하나가 아래 있는 알림(Service)을 계속 띄어야하는데

폰을 끄고 켜면 사라지더라고요

와중에 걸음수 버그났...

그래서 이번 포스트에서는 껏다 켜도 저 Service 가 다시 실행되게 해볼께요. 

 

1. BroadcastReceiver 를 만들어주세요. 

- 저는 ReBootReceiver 라고 이름 지어 만들었어요.

// MyService에 실행하고싶으신 Service 이름을 넣어주시면 되요.
class ReBootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        if (intent?.action == "android.intent.action.BOOT_COMPLETED"){
            val stepService : Intent = Intent(context,MyService::class.java)
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
                context?.startForegroundService(stepService)
            }else{
                context?.startService(stepService)
            }
        }
    }
}

2. AndroidManifest.xml 에 아래 두개를 추가해주세요.

- 관련 권한을 추가해주세요.

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/><!--알림 -->

- application에 아래 부분을 추가해주세요. 

<application
        .
        .
        .>
<receiver
    android:name=".ReBootReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
.
</application>

이렇게만 해주시면 다시 껐다켜도 서비스를 실행해주더라고요

(다시 켜질때 다소 시간이 걸릴수있으니 주의해주세요.)

 

아무튼 저처럼 필요하신 분들을 위해 올려봅니다. 

그리고 저는 버그고치러 가야해요 ㅠㅠ

 

오늘도 파이팅입니다. 

댓글