안드로이드 foreground service 예제

그러나 포그라운드로 앱을 승격하는 유효한 시나리오가 있습니다: 포그라운드 서비스를 사용하기 위한 전제 조건은 앱이 즉각적이고 중요하고(완료해야 함) 사용자에게 인식할 수 있는 작업입니다(대부분 시작되었기 때문에). 잘 정의된 시작과 끝이 있어야 합니다. 앱의 작업이 이러한 조건을 충족하는 경우 작업이 완료될 때까지 포그라운드로 승격할 수 있습니다. 바인딩된 서비스를 구현하는 방법에는 여러 가지가 있으며 구현은 시작된 서비스보다 더 복잡합니다. 이러한 이유로 바인딩된 서비스 설명은 바인딩된 서비스에 대한 별도의 문서에 나타납니다. 주의: 서비스는 기본적으로 선언된 응용 프로그램과 동일한 프로세스에서 실행되며 기본적으로 해당 응용 프로그램의 주 스레드에서 실행됩니다. 사용자가 동일한 응용 프로그램의 활동과 상호 작용하는 동안 서비스가 집중적 이거나 차단 작업을 수행하는 경우 서비스는 활동 성능 이 저하됩니다. 응용 프로그램 성능에 영향을 미치지 않으려면 서비스 내에서 새 스레드를 시작합니다. 이것은 힘과 관련하여 안드로이드의 전략과 지침을 설명하는 일련의 블로그 게시물 중 네 번째입니다. 활동 또는 다른 응용 프로그램 구성 요소에서 서비스를 시작할 수 있습니다 시작 하는 의도를 전달 하여Service() 또는 startForegroundService(). Android 시스템은 서비스의 onStartCommand() 메서드를 호출하고 시작을 지정하는 의도를 전달합니다. 서비스가 시작되면 활성 수명은 전체 수명이 끝나는 동시에 종료됩니다(onStartCommand() 반환 후에도 서비스가 계속 활성 상태입니다). 서비스가 바인딩된 경우 onUnbind()가 반환될 때 활성 수명이 종료됩니다.

활동과 같은 응용 프로그램 구성 요소는 startService()를 호출하고 서비스를 지정하고 사용할 서비스에 대한 모든 데이터를 포함하는 의도를 전달하여 서비스를 시작할 수 있습니다. 서비스는 onStartCommand() 메서드에서 이 의도를 받습니다. 서비스를 실행하는 모든 앱은 시스템에 추가 부하를 가하여 시스템 리소스를 소비합니다. 앱이 우선 순위가 낮은 알림을 사용하여 서비스를 숨기려고 하면 사용자가 적극적으로 상호 작용하는 앱의 성능이 저하될 수 있습니다. 이러한 이유로 앱이 최소 우선 순위 알림으로 서비스를 실행하려고 하면 시스템에서 알림 서랍의 아래쪽 섹션에서 앱의 동작을 호출합니다.