Service

김종주·2023년 7월 24일

About Service

  • 안드로이드 어플래케이션을 구성하는 4개의 컴포넌트 중 하나
  • 화면이 없는 액티비티
  • 백그라운드에서 작업할 때 구현

서비스 종류

1. Started Service

  • 액티비티와 상관없이 독립적으로 동작할때 사용
  • 일반적으로 사용하는 서비스
  • 사용법
startService(Intent(this, AppService::class.java))

2. Bound Service(bindService())

  • 액티비티와 값을 주고 받을 필요가 있을 때 사용
  • 여러개의 액티비티가 같은 서비스 사용 가능 -> 서비스를 바인딩 해서 재사용 가능
  • 인터페이스가 복작하고 액티비가 종료 되면 같이 종료됨 -> 잘 사용하지 않음
  • 사용법
bindService(Intent(this, AppService::class.java))

3. Foreground Service

  • 기본적으로 서비스는 모두 백그라운드 서비스
  • 사용자에게 알림을 통해 현재 작업이 진행중임을 알려주어야함 -> notification 구현 필수
  • 서비스 생성 -> 시스템에 foreground 로 사용됨을 알려주어야 함
  • 사용법
startForegroundService(Intent(this, AppService::class.java))

Service Lifecycle

1. onStartCommand()

  • startService() 함수가 호출되면 호출되는 함수
  • 독립적인 서비스가 필요할 때 구현해야함
  • startService()로 서비스를 호출 시 stopSelf()메소드나 stopService() 함수가 호출될 때 까지 서비스가 살아있음

2.onBind()

  • bindService() 함수를 호출할 때 호출 되는 함수
  • Bound Service 를 사용하기 싶다면 반드시 구현 해야함

3. onCreate()

  • 서비스가 생성될 때 한번한 호출 되는 함수

4. onDestory()

  • 서비스가 종료될 때 호출 되는 함수
  • 리스너 제거, 리시버 제거, 리소스 정리 해주는 코드 작성


Service 구현

1. Service 를 상속 받는 클래스 생성

2. Callback 구현

  • onStartCommand()
  • onBind()
  • onCreate()
  • onDestroy()

3. Menifest 에 선언

<manifest ... >
  ...
  <application ... >
      <service android:name=".클래스 이름" />
      ...
  </application>
</manifest>

4. Foreground Service 구현 시 notification 코드 작성

profile
Wanna be developer

0개의 댓글