Android Service는 백그라운드에서 실행되는 프로세스입니다. 

안드로이드 OS에서 특별한 경우를 제외하고는 백그라운드에서 동작하도록 설계되어 있습니다. 


Background Service

우리가 흔히 말하는 서비스가 백그라운드 서비스 형태입니다. 시스템의 메모리가 부족할 경우 시스템이 해당 서비스를 강제로 종료시킬 수 있습니다. 


Foreground Service

서비스의 우선 순위가 높아서, 시스템의 메모리가 부족하더라도 강제로 종료시키지 않습니다. 

대신 상태바에 Notification이 표시됩니다. 과거에는 상태바에 Notification을 표시하지 않고도 

Foreground Service로 실행할 수가 있었는데, 

현재는 구글 정책으로 Foreground Service를 

수행하기 위해서는 무조건 사용자에게 표시를 해야 하도록 변경되었습니다.



백그라운드 서비스 생성이 허용되지 않는 상황에서 Android O를 대상으로 하는 앱이 startService() 메서드를 사용하려고 시도할 경우 

이제 이 메서드가 IllegalStateException을 발생합니다.


새로운 Context.startForegroundService() 메서드가 포그라운드 서비스를 시작합니다. 

앱이 백그라운드에 있는 중에도 시스템은 앱이 Context.startForegroundService()를 호출하도록 허용합니다. 


시스템이 서비스를 생성한 후, 앱은 5초 이내에 해당 서비스의 

startForeground() 메서드를 호출하여 새 서비스의 알림을 사용자에게 표시해야 합니다. 

앱이 이 시간 한도 내에 startForeground()를 호출하지 않으면 

시스템이 서비스를 중단하고 이 앱을 ANR로 선언합니다



처리방안 

1. JobScheduler를 통한 백그라운드 동작


2. 5초 내에 Service.startForeground() 를 통해 Notification과 연결


3. AlarmManager PendingIntent 전달 



'안드로이드 > Android O (8.0)' 카테고리의 다른 글

알림채널  (0) 2017.08.18
Android O (8.0) 기능  (0) 2017.08.18

+ Recent posts