안드로이드 서비스(Service)란

Lee Jun Hyeong·2023년 1월 3일
0

Android 톺아보기 😇

목록 보기
10/17

📌 서비스(Sercice) 란?

안드로이드의 기본 구성 요소 중의 하나로서 UI 없이 백그라운드에서 실행되는 컴포넌트이다.

📌 언제 사용하는데?

퀴즈 잠금화면 앱을 예로 들어보자.
스마트폰을 켰을 때 퀴즈화면이 나오도록 하는 서비스를 만들려면
앱이 종료되어 있어도 화면이 꺼질 때 브로드캐스트 메시지를 수신하여 알려주어야 한다. 이런 역할을 서비스가 한다.

📌 특징

  • 백그라운드에서 수행할 작업을 시스템에 알린다.
    Context.startService() 함수로 서비스를 시작하면 시스템에 서비스 작업을 예약한다. 이렇게 실행된 서비스는 명시적으로 서비스를 중지할 때까지 계속 실행된다.
  • 서비스 기능의 일부를 다른 앱에게 제공할 수 있다.
    bindService() 함수를 사용해 서비스가 제공하는 함수를 다른 앱들도 사용할 수 있게 한다.
  • 서비스는 별도의 프로세서가 아니다.
    다른 프로세스로 지정할 수도 있지만 특별히 다른 프로세스로 지정하지 않은 경우 Service 객체는 앱과 동일한 프로세스에서 실행된다.
  • 서비스는 쓰레드와 다르다.
    서비스 역시 백그라운드에서 실행되기 때문에 자칫 쓰레드와 헷갈리기 쉽지만 별도로 쓰레드를 생성하여 작업하지 않으면 앱의 메인 스레드에서 작업이 수행된다.

📌 최근 이슈

서비스 사용시 주의할 점은 최근에 배포되는 안드로이드 Oreo 버전부터 백그라운드 서비스에 제한이 생겼다는 점이다.

과거 안드로이드는 자유롭게 서비스를 실행하여 백그라운드에서 모든 작업을 할 수 있었지만 많은 앱들이 불필요하게 서비스브로드캐스트 리시버를 사용하면서 배터리가 너무 빨리 소모되는 등의 문제가 생겼다.

서비스는 UI가 없기 때문에** 사용자는 어떤 앱이 백그라운드에서 실행되고 배터리 소모를 일으키는지 쉽게 알 수가 없다.

구글은 이에 대한 해결책으로 안드로이드 Oreo 버전부터는 '백그라운드(Background) 서비스'가 계속 실행되지 않도록 제한을 추가하고, 만약 계속 실행되어야 하는 서비스는 '포그라운드(Foreground) 서비스'를 사용하도록 방침을 변경하였다.

profile
"왜" 사용하며, "어떻게" 사용하는지에 대해

0개의 댓글