프로그램을 포그라운드에 돌리는 방법은 여러가지가 있다. 그중 겨우 세가지가 기억이 나는데,
1. 화이트리스트 추가(특정 기능을 가진 앱들만 가능하도록 지정되어 있음)
2. JobIntentService 사용
3.(비공식적 방법) StartForeground 후 백그라운드 작업.
3번의 경우 일단 서비스 하나를 포그라운드로 선언하면 해당 프로그램은 유휴 상태로 넘어가지 않으며, 백그라운드 상태에 있지 않다는 판결이 나면서 '안드로이드 8의 백그라운드 실행제한'의 제한으로부터 벗어날 수 있다. 이는 공식적으로 보도한 바는 아니고 비공식적인 가능성이였다.
이 방법을 이용하면 앱이 WAKE LOCK되어 동작하여 trigger가 늦춰지거나 하는 일이 없도록 되는 것으로 알고 있었고, 실무에도 적용했었는데, 역시나 비공식적인 방법인지 공식적인 방법들이 예외없이 더 확실한가보다.
아래 링크에 StartForeground를 사용하면서 일어날 수 있는 예외? 에 대한 설명이 있다. 따라서 이는 보장되지 않는 방법이므로 권장사항으로 StartForeground보다 JobIntentService를 사용하는 것을 권장한다.
(다만 일정한 일을 수행하고 알아서 서비스를 종료시키는 IntentService의 목적에 맞을때만 사용해주어야 한다)
stackoverflow.com/a/56534432/14287904
Context.startForegroundService() did not then call Service.startForeground()
I am using Service Class on the Android O OS. I plan to use the Service in the background. The Android documentation states that If your app targets API level 26 or higher, the system imposes
stackoverflow.com
'[클라이언트] > [Android Kotlin]' 카테고리의 다른 글
[2020.10.26] '당신이 잠든 사이에' 업데이트 - 불필요한 코드 제거하는 방법 (0) | 2020.10.26 |
---|---|
[2020.10.25] '당신이 잠든 사이에' 오류&버그 수정 업데이트 (0) | 2020.10.26 |
[2020.10.25] 이젠 '약속해' 업데이트 준비..! (0) | 2020.10.25 |
[2020. 10. 18] '당신이 잠든 사이에' 업데이트 완료. (0) | 2020.10.19 |
[local class incompatible 에러] 자바 직렬화 - 역직렬화 (1) | 2020.10.18 |