hong's android

[안드로이드] 포어그라운드 서비스 VS 백그라운드 서비스 본문

Android/Android

[안드로이드] 포어그라운드 서비스 VS 백그라운드 서비스

_hong 2023. 1. 10. 17:00

서비스

안드로이드 4대 컴포넌트 하나로서 액티비티는 사용자와 직접적으로 상호작용한다면 서비스는 백그라운드에서 동작하는 작업을 말한다.

 

 

서비스의 필요성

다른 애플리케이션을 사용하면서 음악을 재생시켜야 할 때

 

 

스레드와 서비스의 차이는 뭘까?

서비스는 컴포넌트 종류 중 하나이다. 그래서 액티비티 Ui와 상관없이 별도로 실행할 수 있다. 

서비스는 안드로이드 컴포넌트 하나로서 생명주기가 존재하고 서비스가 비정상적으로 종료될 때 다시 재시작을 보장할 수 있다. 

그리고 프로세스 간 통신을 할 수 있다.

서비스는 메인스레드, 스레드는 별개의 스레드에서 동작한다. 

 

예를 들어, 액티비티가 종료되어도 계속 실행이 되어야 하는 작업이 있을 때 액티비티가 종료되어도 계속 실행되는 것을 보장할 수 있을까? 없다 스레드가 계속 유지될 수 있을지 예측할 수 없고 ui와 관계없이 별도의 생명주기나 메모리가 부족할 때 재실행되는 기능들을 사용 가능 하다.

 

 

포어그라운드 서비스 

포그라운드 서비스는 사용자에게 잘 보이는 몇몇 작업을 수행합니다. 예를 들어 오디오 앱이라면 오디오 트랙을 재생할 때 포그라운드 서비스를 사용합니다. 포그라운드 서비스는 알림을 표시해야 합니다. 포그라운드 서비스는 사용자가 앱과 상호작용하지 않을 때도 계속 실행됩니다.

 

 

백그라운드 서비스 

백그라운드 서비스는 사용자에게 직접 보이지 않는 작업을 수행합니다. 예컨대 어느 앱이 저장소를 압축하는 데 서비스를 사용했다면 이것은 대개 백그라운드 서비스입니다. 메모리가 부족하면 서비스가 종료될 수 있다. 

 

 

예컨대 어느 앱이 저장소를 압축하는 데 서비스를 사용했다면 이것은 대개 백그라운드 서비스이다.

 

참고: 앱이 API 레벨 26 이상을 대상으로 한다면 앱이 포그라운드에 있지 않을 때 시스템에서 백그라운드 서비스 실행에 대한 제한을 적용합니다. 이와 같은 경우에서는 대부분 앱이 예약된 작업을 사용해야 합니다.

 

 

 

 

 

Ref.

더보기