본문 바로가기
[Android]

[Android] StartForeground의 한계

by Hevton 2020. 10. 23.
반응형

프로그램을 포그라운드에 돌리는 방법은 여러가지가 있다. 그중 겨우 세가지가 기억이 나는데,

 

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

 

반응형