반응형
프로그램을 포그라운드에 돌리는 방법은 여러가지가 있다. 그중 겨우 세가지가 기억이 나는데,
1. 화이트리스트 추가(특정 기능을 가진 앱들만 가능하도록 지정되어 있음)
2. JobIntentService 사용
3.(비공식적 방법) StartForeground 후 백그라운드 작업.
3번의 경우 일단 서비스 하나를 포그라운드로 선언하면 해당 프로그램은 유휴 상태로 넘어가지 않으며, 백그라운드 상태에 있지 않다는 판결이 나면서 '안드로이드 8의 백그라운드 실행제한'의 제한으로부터 벗어날 수 있다. 이는 공식적으로 보도한 바는 아니고 비공식적인 가능성이였다.
이 방법을 이용하면 앱이 WAKE LOCK되어 동작하여 trigger가 늦춰지거나 하는 일이 없도록 되는 것으로 알고 있었고, 실무에도 적용했었는데, 역시나 비공식적인 방법인지 공식적인 방법들이 예외없이 더 확실한가보다.
아래 링크에 StartForeground를 사용하면서 일어날 수 있는 예외? 에 대한 설명이 있다. 따라서 이는 보장되지 않는 방법이므로 권장사항으로 StartForeground보다 JobIntentService를 사용하는 것을 권장한다.
(다만 일정한 일을 수행하고 알아서 서비스를 종료시키는 IntentService의 목적에 맞을때만 사용해주어야 한다)
stackoverflow.com/a/56534432/14287904
반응형
'[Android]' 카테고리의 다른 글
안드로이드 Process와 Task [개념편] (1) | 2023.01.12 |
---|---|
JIT vs AOT (0) | 2023.01.10 |
새 책을 구매했다. 그리고 그간 샀던 책들을 모아봤다. (0) | 2023.01.09 |
2016년도에 작성했던 안드로이드 예제 강의들 모음!! (1) | 2022.10.04 |
[local class incompatible 에러] 자바 직렬화 - 역직렬화 (1) | 2020.10.18 |