티스토리 뷰
안녕하세요, 오늘은 안드로이드 4대 컴포넌트 중 하나인 "서비스"에 대해서 정리해보려고 합니다.
글 작성에 앞서,
1. 서비스 정의
2. 서비스 유형
3. 서비스 구현을 위해 알아야 하는 필수 사항
4. 메니페스트(Manifest) 서비스 선언
이 순서로 정리해보겠습니다.
1. 서비스 정의
백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 입니다. 사용자 인터페이스(UI)를 제공하지 않습니다. 다른 애플리케이션에서도 서비스를 시작할 수 있으며, 다른 애플리케이션으로 전환 하더라도 백그라운드에서 계속해서 실행할 수 있습니다. 또한, 구성 요소를 서비스에 바인딩하여 서비스와 상호작용할 수 있으며, 프로세스 간 통신(IPC)도 수행할 수 있습니다.
예시 상황
1) 네트워크 트랜잭션을 처리
2) 음악을 재생
3) 파일 I/O를 수행
2. 서비스 유형
포그라운드 서비스(Foreground Service)는 사용자에게 잘 보이는 몇몇 작업을 수행합니다. 예를 들어, 오디오 트랙을 재생할 때 포그라운드 서비스를 사용합니다.
2) 백그라운드 (Background)
백그라운드 서비스는 사용자에게 직접 보이지 않는 작업을 수행합니다. 예를 들어, 파일 다운받는 것 입니다.
3) 바인드 (Bind)
- 애플리케이션 구성 요소가 bindService() 를 호출 -> 해당 서비스에 바인딩 되면 서비스가 바인딩
- 바인딩된 서비스는 클라이언트-서버 인터페이스를 제공
- 구성 요소가 서비스와 상호작용하게 하며, 결과를 받을 수도 있고 심지어 이와 같은 작업을 여러 프로세스에 걸쳐 프로세스 간 통신(IPC)으로 수행할 수도 있습니다.
- 바인딩된 서비스는 또다른 애플리케이션 구성 요소가 이에 바인딩 되어 있는 경우에만 실행됩니다. 여러 개의 구성 요소가 서비스에 한꺼번에 바인딩될 수 있지만, 이 모든 것에서 바인딩이 해제되면 해당 서비스는 소멸됩니다.
< 필수 함수 >
1) onStartCommand()
- 시스템이 이 메서드를 호출하는 것은 또 다른 구성 요소(예: 액티비티)가 서비스를 시작하도록 요청하는 경우에 사용.
- 이 메서드가 실행되면 서비스가 시작되고 백그라운드에서 무한히 실행될 수 있음
2) onBind()
시스템은 다른 구성 요소가 해당 서비스에 바인딩 되고자 하는 경우(예를 들어 RPC를 수행하기 위해)에도 이 메서드를 호출한다.
이 메서드를 구현할 때에는 클라이언트가 서비스와 통신을 주고받기 위해 사용할 인터페이스를 제공해야 합니다.
이 메서드는 항상 구현해야 하지만, 바인딩을 허용하지 않으려면 null을 반환해야 합니다.
3) onCreate()
- 시스템은 서비스가 처음 생성 되었을 때, 이 메서드를 호출하여 일회성 설정 절차를 수행합니다. 서비스가 이미 실행 중인 경우, 이 메서드는 호출되지 않습니다.
- 서비스가 onStartCommand() 또는 onBind()를 호출하기 전에 실행하는 메소드
4) onDestory()
시스템이 이 메서드를 호출하는 것은 서비스를 더 이상 사용하지 않고 소멸시킬 때 사용. 서비스는 스레드, 등록된 리스너 또는 수신기 등의 각종 리소스를 정리하는 경우 호출합니다.
4. 메니페스트 선언
마지막 서비스를 사용하기 위한 필수 사항입니다. 코드는 잘 구현했지만 메니페스트에 서비스 선언을 안하시면 기능이 잘 작동하지 않으니까 꼭 까먹지 마세요!!!!
<application> 요소의 하위에 추가하시면 됩니다.
<manifest ... >
...
<application ... >
<service android:name=".ExampleService" />
...
</application>
감사합니다.
'Android' 카테고리의 다른 글
[Android] 안드로이드 이미지 효율적 처리를 위한 방법 정리 (0) | 2020.04.01 |
---|---|
[Android] 안드로이드 이미지 처리를 위한 Glide 라이브러리 정리 (0) | 2020.03.31 |
[Android] 안드로이드 네이밍/변수명 규칙 정하기 (0) | 2020.03.29 |
[Android] 안드로이드란 무엇일까요? (0) | 2020.03.20 |
[Android] 안드로이드 액티비티(Activity) 생명주기란? 왜 알아야 되나요? (0) | 2020.03.19 |
- Total
- Today
- Yesterday
- TextInputEditText
- 안드로이드
- Android
- 개발공부
- 코드스타일
- git
- TextInputLayout
- github
- 4대컴포넌트
- Swift데이터타입
- swift
- 서비스선언
- AUTH0
- IT
- 밑줄색
- 안드로이드개념
- Swift기초자료
- 인증토큰
- 네이버웹마스터
- 사이트맵등록방법
- codingtest
- underline color
- 구글서치콘솔
- 티스토리블로그광고
- 안드로이드공부
- ios
- 인드로이드4대컴포넌트
- CI/CD
- 블로그관리하기
- 밀리세컨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |