반응형
안드로이드 앱을 종료하면 onDestroy 가 발생하는것은 라이프 사이클을 공부한 사람이라면 알고있는 사실이다.
실질적으로 onDestroy는 앱종료, 액티비티 종료시 실행해야 하는 코드가 있으면 여기에 넣어주는 경우가 많다.
이번에 업무를 진행할 때도 앱 종료시 SharePreference에 값 저장을 해야하는 상황이 발생해서 onDestroy에 값을 넣어 줄까 하다가!
onDestroy는 앱종료 외에 액티비티 종료에서도 발생하니까 이것만으로는 완벽한 코드가 되지 않았다.
그래서 Application에 Lifecycle을 이용한여 코드를 넣어보았는데... 이벤트가 발생되지 않는다..
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun appDestroyed() {
// ...
}
행여 위 코드가 실행된다 하더라도 앱을 백그라운드 상태에서 프로세스 종료로 실행했을 때 onDestroy가 실행되지 않기 때문에 완벽한 코드가 되지 않는다.
따라서 TaskService를 별도로 만들어서 서비스를 등록한 후 onTaskRemoved를 override하여 사용하면 된다.
아래는 코드!
class TaskService : Service() {
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onTaskRemoved(rootIntent: Intent?) {
Logger.d("#!# Service TaskRemoved")
//.. some code
stopSelf()
super.onTaskRemoved(rootIntent)
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return super.onStartCommand(intent, flags, startId)
}
}
이렇게 서비스를 생성하고 이를 Manifest 에 등록해주어야 한다.
<service
android:name=".service.TaskService"
android:stopWithTask="false" />
반응형
'Develop > Android' 카테고리의 다른 글
Kotlin 을 이용한 동적 setBackgroundColor (0) | 2022.07.06 |
---|---|
Duplicate Class Found in Android (0) | 2022.06.24 |
Android - 앱 재실행 하기 (0) | 2022.06.16 |
Timber와 Android Logger 개발 경험 공유 ( 긴 로그 기록, 로그 파일 저장 ) (0) | 2022.06.13 |
Android - Compose Codelab (0) | 2021.11.16 |