글
Oreo 버전부터는 일반적인 Background 서비스를 사용하기 까다로워 졌다.
일단 서비스 실행 후 앱이 보이지 않거나 (액티비티가 화면에 나오지 않는 등)
Foreground 서비스를 사용하지 않거나
IME, 배경화면 서비스, 알림 리스너, 음성 또는 텍스트 서비스 중 하나를 사용하지 않는 이상
서비스는 오래가지 않아 종료된다.
Foreground 서비스는 서비스 실행과 동시에 알림(Notification)을 보여주어 사용자가 서비스가 동작 중이라는 것을 인지시켜 주며 실행을 유지한다.
- Foreground 서비스를 실행
startService(Intent(context, Service::class.java))
- 서비스 내에서 Foreground 실행 함수를 호출해야한다.
startForeground(FOREGROUND_ID, notification)
이렇게 사용하면 서비스는 알림을 띄우며 동작하게 된다.
이후 서비스를 종료하기 위해서는 서비스 클래스 내에서 stopSelf() 함수를 호출하거나
외부에서 context.stopService(intent)를 호출하면 된다.
종료하는 과정에서는 알림 역시 제거된다. 하지만 알림을 제거하지 않고 서비스를 종료하기 위해서는 클래스에서 또는 클래스 내에서 onDestroy 함수에서
stopForeground(Service.STOP_FOREGROUND_DETACH)
를 추가하면 된다.
주의해야할 사항은 위 함수는 Nougat(API 24)이상부터 사용가능하다.
또한 boolean값을 받는 같은 함수가 존재하는데 false를 주어도 서비스 종료 시 알림이 제거된다.
'Android > Tips' 카테고리의 다른 글
Admob 사용 시 앱 실행 속도 문제 (0) | 2018.07.27 |
---|---|
Recyclerview 팁 (0) | 2018.07.22 |
외부에서 url 클릭 시 자신의 앱으로 연결 (0) | 2018.02.13 |
Google Maps Utility Library의 KML style 관련 팁들 (0) | 2018.01.22 |
Google Maps utility library 소개 (0) | 2018.01.15 |
RECENT COMMENT