개발 일기

Service 본문

Client/안드로이드

Service

이건욱

안드로이드에서 서비스는 4대 컴포넌트중에 하나로써 백그라운드에서 오래 실행되는 작업을 수행할 수 있는

요소입니다.

 

세가지 유형 :)

  • 포그라운드
  • 백그라운드
  • 바인드

포그라운드 :)

 

포그라운드 서비스는 보통 사용자에게 잘 보이는 작업들을 수행합니다. 따라서 알림을 표시를 해야 하고 , 사용자가 앱과 상호작용을 하지 않을 때도 계속 실행됩니다.

 

백그라운드 :)

백그라운드 서비스는 사용자에게 보이지 않는 작업을 수행합니다.

앱이 Android 8.0(API 레벨 26) 이상으로 존재한다면 앱이 포그라운드에 있지 않을 때 시스템에서는 백그라운드 제한이 적용됩니다.

 

바인드 :)

bindService()를 호출하여 해당 서비스에 바인딩되면 서비스가 바인딩됩니다.

바인딩된 서비스는 클라이언트-서버 인터페이스를 제공하여 activity or fragment 데이터를 주고 받을 수도 있고 프로세스간의 통신에도 사용이됩니다.

 

기본 사항 :)

onStratCommand :)

activity가 서비스를 시작하기 위해서 startService or startForegroundService라는 호출을 할때 onStartCommand가 호출이 됩니다. 

 

onBind :)

바인딩을 하고자 할 때 클라이언트와 서비스와 통신을 주고 받기 위한 인터페이스를 제공해야합니다.

허용을 않으려면 null을 return 하시면 됩니다.

 

onCreate :)

서비스가 처음 생성이 되었을 때 ( onStartCommand or onBind() 호출 전) 일회성으로 설정 절차를 수행합니다.

이미 서비스가 실행이 된 경우 호출되지 않습니다.

 

onDestroy :)
서비스가 더 이상 사용되지 않고 소멸시킬 때 호출이 됩니다.

 

onTaskonTaskRemoved :)

Task가 종료되는 시점을 감지합니다.  

androidManifest에서 android:stopWithTask 속성을 false로 해주셔야 합니다!.

서비스 구현 :)

 

매니페스트에서 서비스 선언 :)

<manifest ... >
  ...
  <application ... >
      <service android:name=".ExampleService" />
      ...
  </application>
</manifest>

service manifest 구성요소는 링크를 달아 드리겠습니다.

 

 

서비스 생성 :)

Intent(this, ExampleService::class.java).also { intent ->
    startService(intent)
}

서비스 종료 :)

stopSelf() or stopService()

서비스 확장 :)

 

 

 

 

 

 

 

 

 

'Client > 안드로이드' 카테고리의 다른 글

Rxjava Subject  (0) 2020.03.26
Broadcast Receiver ?  (0) 2020.03.26
paging library ? (페이징 라이브러리)  (0) 2020.03.24
Databinding ?  (0) 2020.03.21
Android Manifest ?  (0) 2020.03.21
Comments