시스템 레벨의 서비스에 액세스하는데 사용됨.
이 메소드를 사용하여 시스템 서비스의 인스턴스를 가져올 수 있다.
예를 들어, Context.getSystemService(Context.WINDOW_SERVICE)를 호출하면 윈도우 매니저 객체를 반환합니다.
안드로이드에서 사용 가능한 시스템 서비스에는 다음과 같은 것들이 있습니다.
WINDOW_SERVICE: 윈도우 매니저
LAYOUT_INFLATER_SERVICE: XML 파일을 인플레이트 하는 데 사용되는 레이아웃 인플레이터
ACTIVITY_SERVICE: 액티비티 매니저
POWER_SERVICE: 전원 관리 서비스
NOTIFICATION_SERVICE: 상태 바 및 알림 관리 서비스
CONNECTIVITY_SERVICE: 네트워크 연결 관리 서비스
LOCATION_SERVICE: 위치 관리 서비스
TELEPHONY_SERVICE: 전화 관리 서비스
등등 다양한 시스템 서비스가 있으며, 이러한 서비스를 사용하여 시스템 수준에서 필요한 작업을 수행할 수 있습니다. 예를 들어, ConnectivityManager를 사용하여 네트워크 연결 상태를 확인하고, PowerManager를 사용하여 장치 전원 상태를 관리할 수 있습니다.
🤔 그럼 여기서 '안드로이드 시스템 서비스'는 무엇일까??
"Service" 는 UI 없이 백그라운드에서 특정 작업을 수행하는 프로세스를 말한다.
Android Framework 에서는 어플리케이션 개발에 필요한 중요 API 들을 "시스템 서비스" 형태로 지원한다.
안드로이드 시스템 서비스는 디바이스 제어, 위치 정보 제공, 알람 설정 및 통지 메시지 표시 등과 같이 시스템의 가장 기본적인 핵심 기능들을 제공..!
시스템 서비스는 애플리케이션 서비스와 달리 직접 실행할 필요가 없이 getSystemService()를 이용해서 바로 이용할 수 있다. init 프로세스에 의해 안드로이드의 부팅과정에서 미리 실행되기 때문이다.
네이티브 시스템
C/C++ 영역에서 동작
네이티브 시스템 서비스는 C++로 작성돼 있다.
주요 서비스로는 Audio Finger, Surface Finger 등.
Audio FInger 서비스
안드로이드 애플리케이션의 오디오 데이터를 믹싱해서 헤드폰이나 스피커처럼 다양한 오디오 출력 장치로 내보내는 역할을 한다.
Surface Finger 서비스
다양한 애플리케이션에서 사용중인 Surface를 조합해 프레임 버퍼 장치로 렌더링해주는 서비스.
자바 시스템 서비스
자바 영역에서 동작.
자바 시스템 서비스는 안드로이드 부팅 시 SystemServer라는 시스템 프로세스에 의해 일괄적으로 실행
자바 시스템 서비스를 이용하려면 각 서비스와 통신 가능한 Local Manger 객체를 이용해야 한다.
- 코어 플랫폼 서비스
안드로이드 애플리케이션과 직접 상호작용은 하지 않지만 안드로이드 프레임워크가 동작하는 데 필수적인 서비스.
ex) Activity Manager Service, Window Manager Service 등
- 하드웨어 서비스
저수준 하드웨어 제어를 위한 API를 제공하는 서비스
ex) Alarm , Connectivity, Sensor
🤔 애플리케이션 서비스 란 또 뭐람??!
Activity 와 동일 프로세스 (동일 패키지 내)에서 서비스가 실행되는 "로컬 서비스" 와
Activity 와 다른 프로세스에서 서비스가 실행되는 "원격 서비스"로 구분된다.