1. 안드로이드 서비스
안드로이드 앱을 만들다 보면 사용자와 상호작용 하는 것이 아니라 앱 백그라운드에서 수행돼야 하는 작업들이 있다. 예를 들어 음악 재생 앱이라면 음악을 재생하고 홈키를 눌러도 노래는 계속 재생돼야 된다. 이렇게 백그라운드에서 수행돼야 하는 작업들은 안드로이드 4대 컴포넌트 중 하나인 서비스에서 작업하게 된다.
액티비티 및 다른 구성 요소와 마찬가지로, 서비스는 모두 애플리케이션의 매니페스트 파일에서 선언해야 된다.
2. 서비스의 3가지 유형
-
포그라운드
서비스는 포그라운드로도 실행할 수 있는데 예를 들어 알림창에 서비스가 실행 중인 것을 표시하는 등에 사용한다.
-
백그라운드
사용자에게 보이지 않고 앱을 종료하더라도 계속 실행돼야 하는 작업들은 백그라운드에서 수행한다. 단 시스템 리소스가 부족할 경우 강제 종료될 수 있다.
-
바인드
애플리케이션 구성 요소가 bindService()를 호출하여 해당 서비스에 바인딩되면 서버 - 클라이언트와 같은 형태로 상호작용 할 수 있다. 따라서 여러 프로세스에서 하나의 서비스에 바인딩하여 작업을 수행할 수 있다.
3. 서비스 수명 주기, 주요 콜백 메서드
서비스의 수명 주기는 백그라운드와 바인드로 나뉜다.
- 백그라운드
startService(): 앱의 다른 구성요소가 서비스를 실행 할 때 사용한다.
stopService(): 앱의 다른 구성요소가 서비스를 종료 시킬때 사용한다.
onCreate(): 서비스가 호출 될 때 한 번 호출된다.
onStartCommand(): 앱의 다른 구성 요소에서 서비스를 실행하면 이 메서드가 호출되고 서비스가 시작돼 백그라운드에서 작업을 수행한다.
stopSelf(): 서비스가 스스로 중단한다.
onDestroy(): 서비스가 완전히 종료될때 호출된다.
- 바인드
bindService(): 앱의 다른 구성요소에서 서비스에 바인딩 할 때 사용한다.
unbindService(): 앱의 다른 구성요소에서 서비스를 언바인딩 할 때 사용한다.
onCreate(): 서비스가 호출 될 때 한 번 호출된다.
onBind(): 앱의 다른 구성요소가 서비스에 바인딩되면 호출된다.
onUnbind(): unbindService() 호출 시 호출된다.
onDestroy(): 서비스가 완전히 종료될때 호출된다.