# 서피스의 종류
시작 타입의 서비스, 연결 타입의 서비스
* 시작 타입의 서비스 (started service)
= 액티비티가 startService()를 호출하여서 서비스를 시작
* 연결 타입의 서비스 (bound service)
= 액티비티가 bindService()를 호출하여서 서비스를 시작
서비스는 애플리케이션에 의해 실행됨
시작된 서비스는 다른 애플리케이션으로 넘어가도 배경에서 실행됨
서비스는 인텐트 객체를 이용해 시작
매니패스트에 공용으로 선언해야 함
서비스는 새로운 스레드로 생성 X
# IntentService 클래스
* Service 클래스
: 만약 서비스에서 하는 작업이 상당히 시간을 많이 요구하는 작업이라면 서비스 안에서 새로운 스레드를 생성하는 것이 좋다
* IntentService 클래스
: 이 클래스는 시작 요청이 들어올 때마다 이것을 처리하는 작업 스레드를 별도로 생성한다.
# 연결타입의 서비스
연결된 서비스는 클라이언트/서버 모델에서 서버의 역할을 한다
일정한 요청을 보내고 요청의 결과를 컴포넌트를 통해서 전송받음
시작타입과는 다르게 백그라운드에서 무한히 실행X
# 서비스 인터페이스를 정의하는 3가지 방법
Binder클래스 확장하기 : 애플리케이션내에서 백그라운 작업을 수행할 때
Messager 클래스 사용하기 : 프로세스간의 통신을 구현할 때
Using AIDL
# 방송 수신자
안드로이드 장치에서는 많은 이벤트들이 발생
이벤트르 받는 컴포넌트가 방송 수신자
배터리가 부족하거나 네트워크가 끊겼을 때 등 이벤트를 발생하여 사용자에게 알려줌
매니패스트 안에 정의
# 중요한 방송
| 액션 | 설명 |
| ACTION_TIME_TICK | 1분마다 보내진다. |
| ACTION_TIME_CHANGED | 현재 시각 설정 |
| ACTION_TIMEZONE_CHANGED | 시간대 변경 |
| ACTION_BOOT_COMPLETED | 부트 완료 |
| ACTION_PACKAGE_ADDED | 패키지 추가 |
| ACTION_PACKAGE_CHANGED | 패키지 변경 |
| ACTION_PACKAGE_REMOVED | 패키지 삭제 |
| ACTION_MEDIA_MOUNTED | 외부 저장 장치 마운트 완료 |
| ACTION_MEDIA_REMOVED | 외부 저장 장치 제거 |
| ACTION_BATTERY_CHANGED | 배터리 상태 변경 |
| ACTION_BATTERY_LOW | 배터리 저충전 |
| ACTION_POWER_CONNECTED | 전원 연결 |
| ACTION_POWER_DISCONNECTED | 전원 연결 해제 |
| ACTION_SHUTDOWN | 파워 오프 |
# 방송 수신자의 등록방법
매니패스트 파일에서 선언 – 최신버전에서는 동작 하지 않음. 배터리 소모가 많기 때문
자바 코드에서 동적으로 등록 – 최신버전에서는 이 방법 사용
'Programming > Mobile' 카테고리의 다른 글
| [안드로이드스튜디오] 인텐트 (0) | 2021.09.19 |
|---|---|
| [안드로이드스튜디오] 액티비티로부터 결과받기 (0) | 2021.09.12 |
| [안드로이드스튜디오] 여러페이지로 구성된 애플리케이션 작성 (0) | 2021.09.12 |
| [안드로이드스튜디오] 명시적 인텐트 - 두개의 액티비티로 이루어진 애플리케이션 (0) | 2021.09.11 |
| [안드로이드스튜디오] 액티비티 (0) | 2021.09.11 |