안드로이드 service 예제

서비스를 만들려면 서비스 기본 클래스 또는 기존 하위 클래스 중 하나를 확장하는 클래스를 만들어야 합니다. 서비스 구현 중에 서비스 수명 주기의 주요 측면을 처리하는 일부 콜백 메서드를 재정의하고 구성 요소가 서비스에 바인딩할 수 있는 기능을 제공해야 합니다. 이 문서는 developerlife.com 처음 게시되었습니다. 당신은 안드로이드에 내 모든 콘텐츠를 읽을 수 있습니다, 코틀린, 반응, 파이어 베이스, developerlife.com UX 디자인. 저에 대해 자세히 알아보려면 nazmulidris.com 방문하십시오. IntentServic e 클래스를 사용하면 최소한의 코딩으로 서비스를 구현할 수 있지만 서비스 클래스의 유연성과 동기 적 특성이 필요한 경우가 있습니다. 이 장에서 분명하게 알 수 있듯이 구현할 몇 가지 추가 프로그래밍 작업이 포함됩니다. 모든 클라이언트가 서비스에서 게시한 특정 인터페이스에서 연결이 끊어지면 시스템에서 이 메서드를 호출합니다. 메신저는 또한 활동에 메신저를 전달 할 수있는 방법을 getBinder () 제공합니다. 따라서 활동은 서비스에 메시지를 보낼 수 있습니다. 서비스는 (호스팅 프로세스의) 주 스레드에서 실행되는 UI가없는 안드로이드 응용 프로그램 구성 요소입니다.

또한 AndroidManifest.xml에서 선언해야합니다. 백그라운드 스레드에서 서비스 코드를 실행하려면 직접 관리해야 합니다. 용어 배경 및 전경에 적용 할 수 있습니다 : MainActivity라는 활동com.vogella.android.service.receiver라는 새로운 프로젝트를 만듭니다. 이 문서에서는 Android 구성 요소의 수명 주기를 참조하기 위해 배경 및 전경 용어를 사용합니다. 그리고 스레드를 참조할 때 백그라운드 스레드 및 포그라운드 스레드를 명시적으로 사용합니다. 바인딩된 서비스를 만들려면 클라이언트가 서비스와 통신하는 방법을 지정하는 인터페이스를 정의해야 합니다. 서비스와 클라이언트 간의 이 인터페이스는 IBinder의 구현이어야 하며 서비스가 onBind() 콜백 메서드에서 반환해야 하는 것입니다. 클라이언트가 IBinder를 받은 후 해당 인터페이스를 통해 서비스와 상호 작용을 시작할 수 있습니다. 시작된 서비스는 의도로 시작됩니다. 그리고 서비스를 시작하는 구성 요소는 실제로 연결을 유지하지 않으며 시작 된 서비스에 무언가를 통신해야하는 경우 다시 시작하고 다른 의도를 전달할 수 있습니다.

이는 시작 서비스와 바인딩된 서비스의 주요 차이점 중 하나입니다. 반면에 바인딩된 서비스는 클라이언트-서버 패턴을 따릅니다. 클라이언트(Android UI 구성 요소 또는 다른 서비스)가 서비스(이 경우 서버)에서 직접 메서드를 호출하는 데 사용할 수 있는 스텁(또는 바인더)을 보유하는 경우 많은 안드로이드 O의 배경 서비스와 함께 변경되었습니다. 주요 차이점 중 하나는 영구 알림이 없는 시작 된 서비스는 활동이 사라질 때 백그라운드에서 실행될 수 없습니다. 즉, 시작 된 서비스를 연결 하는 영구 알림이 있어야 합니다. 또한 다른 방법으로 시작 된 서비스를 시작 -startForegroundService(). 그리고 당신은 포그라운드에이 시작 된 서비스를 이동 하 고 그것에 영구 알림을 연결 하기 위해 5 초, 그렇지 않으면 ANR을 얻을 것 이다. 이 모든 예제와 함께 아래에 설명됩니다.

참고: Android 9(API 수준 28) 이상및 전경 서비스를 사용하는 앱은 FOREGROUND_SERVICE 권한을 요청해야 합니다. 이것은 정상적인 권한이므로 시스템은 요청 앱에 자동으로 부여합니다. 프로젝트 도구 창에서 app -> java 아래에 있는 com.ebookfrenzy.serviceexample 패키지 이름을 마우스 오른쪽 단추로 클릭하여 프로젝트에 새 클래스를 추가합니다.> 자바 클래스 메뉴 옵션. 결과 새 클래스 만들기 대화 상자 내에서 새 클래스 MyIntentService 의 이름을 지정합니다. 마지막으로 확인 버튼을 클릭하여 새 클래스를 만듭니다. 서비스는 다른 구성 요소(클라이언트)가 bindService()를 호출할 때 만들어집니다. 그런 다음 클라이언트는 IBinder 인터페이스를 통해 서비스와 통신합니다.