포그라운드 및 바운드 서비스를 사용하는 Jetpack Compose가 포함된 간단한 스톱워치 애플리케이션
전체 비디오 튜토리얼을 보려면 YouTube를 확인하세요.
이 애플리케이션은 기본적으로 시, 분, 초를 나타내는 3가지 서로 다른 텍스트 단위로 구성됩니다. 또한 UI에는 두 개의 버튼이 있습니다. 첫 번째 버튼은 서비스 상태에 따라 변경되며 두 번째 버튼을 사용하면 포그라운드 서비스를 취소하여 스톱워치를 재설정할 수 있습니다.
UI 버튼이나 알림 패널을 사용하여 스톱워치를 제어할 수 있습니다. 서비스를 사용하고 있으므로 애플리케이션을 닫아도 알림 패널을 통해 스톱워치 상태를 추적할 수 있습니다.
Hilt는 프로젝트에서 수동 종속성 주입을 수행하는 상용구를 줄이는 Android용 종속성 주입 라이브러리입니다. 수동 종속성 주입을 수행하려면 모든 클래스와 해당 종속성을 직접 구성하고 컨테이너를 사용하여 종속성을 재사용하고 관리해야 합니다.
Hilt는 프로젝트의 모든 Android 클래스에 대한 컨테이너를 제공하고 수명 주기를 자동으로 관리함으로써 애플리케이션에서 DI를 사용하는 표준 방법을 제공합니다. Hilt는 Dagger가 제공하는 컴파일 시간 정확성, 런타임 성능, 확장성 및 Android Studio 지원의 이점을 누릴 수 있도록 인기 있는 DI 라이브러리 Dagger를 기반으로 구축되었습니다.
바인딩된 서비스는 다른 응용 프로그램이 바인딩하고 상호 작용할 수 있도록 하는 Service 클래스의 구현입니다. 서비스에 대한 바인딩을 제공하려면 onBind() 콜백 메서드를 구현해야 합니다. 이 메서드는 클라이언트가 서비스와 상호 작용하는 데 사용할 수 있는 프로그래밍 인터페이스를 정의하는 IBinder 개체를 반환합니다.
포그라운드 서비스는 사용자에게 눈에 띄는 작업을 수행합니다.
포그라운드 서비스는 상태 표시줄 알림을 표시하므로 사용자는 앱이 포그라운드에서 작업을 수행하고 시스템 리소스를 소비하고 있음을 적극적으로 인식할 수 있습니다.
Android 12(API 레벨 31) 이상을 실행하는 기기는 단기 실행 포그라운드 서비스를 위한 간소화된 환경을 제공합니다. 이러한 장치에서 시스템은 포그라운드 서비스와 관련된 알림을 표시하기 전에 10초를 기다립니다. 몇 가지 예외가 있습니다. 몇몇 유형의 서비스는 항상 즉시 알림을 표시합니다.