Linuxias
Developer's Delight
Linuxias
  • Category
    • AI
      • Deep Learning
      • Machine Learning
      • Data Science
      • Framework
      • MLOps
      • Paper-Review
      • Tips
    • Android
      • Kotlin
      • Component
      • Compose
      • Compose UI
      • Material
      • Testing
    • Software Architecture
      • Architecture Pattern
      • Design Pattern
      • Requirement Engineering
    • Linux
      • Compile & Link
      • Command & Tool
      • Container
      • Debugging & Testing
      • Profiling
      • Kernel Analysis
      • Server
      • Shell Script
      • System Programming
    • Language
      • Carbon
      • C,C++
      • C#
      • Java
      • Python
    • ETC
      • Data Struct | Algorithm
      • git
      • Security
    • Book
    • 경제공부
      • 세금
      • 부동산
hELLO · Designed By 정상우.
Linuxias

Developer's Delight

Android/Component

[Android] Service #1 - 개요

2022. 4. 21. 01:40
반응형

Service란?

서비스는 백그라운드에서 작업을 수행하는 안드로이드의 4대 구성요소 중 하나입니다. 사용자 인터페이스를 제공하지 않습니다. 서비스는 안드로이드 어플리케이션의 구성요소(예를 들어 Activity, Fragment, ..)가 시작할 수 있으며, 이 서비스는 사용자가 다른 어플리케이션을 사용 중에도 백그라운드에서 계속 동작합니다. 즉 서비스를 멈추게 하기 전까지는 멈추지 않고 지속적으로 할 일을 수행하고 있습니다.

Service의 유형

서비스는 크게 3가지 유형으로 나뉠 수 있습니다.

  • Foreground Service
  • Background Service
  • Bound Service

1) Foreground Service

포그라운드 서비스는 사용자에게 눈에 띄는 작업을 수행합니다. 포그라운드 서비스에 상태표시줄에 Notification이 표시되는 형태로 이해하시면 됩니다. 즉 사용자가 현재 서비스가 작업 중임을 인지할 수 있습니다. 예를 들어 멜론이나, 유튜브 뮤직 등을 실행하게되면, 상태표시줄에 현재 재생되고 있는 음악 정보등이 표시됩니다. 다른 앱을 실행하여도 음악은 계속 실행하도록 서비스는 동작하지만, 사용자는 상태표시줄에서 작업이 수행중임을 인지할 수 있는 상태입니다.

2) Background Service

백그라운드 서비스는 사용자에게 직접적으로 보여지지 않는 작업을 수행합니다. 백그라운드 서비스는 사용자가 서비스가 동작하고 있는지 여부를 확인하고 인지할 수 없기에 기기의 성능 저하를 유발하게 됩니다. 그래서 Android API 레벨 26 이상 부터는 앱이 포그라운드에 있지 않을 때 시스템에서 백그라운드 서비스 실행하는 것에 제한을 적용하고 있습니다.

3) Bound Service (바인드된 서비스)

Bind 는 사전적인 의미로 '묶다'를 의미합니다. 그렇다면 바인드된 서비스는 서비스가 어떤 구성요소와 묶여있을 수 있다는 걸로 해석이 가능합니다. 즉 다른 구성요소와 연결이 되어 서비스가 구성요소와 요청, 응답을 주고 받고 IPC 등을 수행할 수 있음을 의미합니다.

Service 기본 사용하기

Service를 생성하려면 Service 클래스를 상속받는 클래스를 생성해야 합니다. 그리고 서비스의 생명주기 처리에 필요한 몇가지 메소드를 재정의해야 합니다. 아래 재정의가 필요한 메소드들 입니다.

  • onStartCommand()
  • onBind()
  • onCreate()
  • onDestroy()
반응형
저작자표시 비영리 (새창열림)

'Android > Component' 카테고리의 다른 글

Application Foreground/Backgroud 상태 확인하기  (0) 2022.06.13
[Android/Unity] Failed to install the following Android SDK packages as some licences have not been accepted.  (0) 2022.05.07
[Android/Unity] 터미널 환경에서 빌드하기 (Ubuntu)  (2) 2022.05.05
[Android/Unity] TargetSDK version 31 이상에서 Manifest merger failed 문제  (0) 2022.05.04
[Android] DI, 그리고 Hilt (작성중)  (0) 2022.04.14
    'Android/Component' 카테고리의 다른 글
    • [Android/Unity] Failed to install the following Android SDK packages as some licences have not been accepted.
    • [Android/Unity] 터미널 환경에서 빌드하기 (Ubuntu)
    • [Android/Unity] TargetSDK version 31 이상에서 Manifest merger failed 문제
    • [Android] DI, 그리고 Hilt (작성중)
    Linuxias
    Linuxias
    I want to be a S/W developer who benefits people.

    티스토리툴바