bindservice 예제

LocalBinder는 클라이언트가 LocalService의 현재 인스턴스를 검색할 수 있는 getService() 메서드를 제공합니다. 이렇게 하면 클라이언트가 서비스에서 공용 메서드를 호출할 수 있습니다. 예를 들어 클라이언트는 서비스에서 getRandomNumber()를 호출할 수 있습니다. 다음은 포그라운드에서 이미 시작된 서비스를 실행하는 예입니다. 이 예제에는 서비스가 클라이언트에 응답하는 방법을 나타내지 않습니다. 서비스가 응답하도록 하려면 클라이언트에서 메신저도 만들어야 합니다. 클라이언트가 onServiceConnected() 콜백을 수신하면 send() 메서드의 replyTo 매개 변수에 클라이언트의 Messenger를 포함하는 메시지를 서비스에 보냅니다. 많은 안드로이드 O의 배경 서비스와 함께 변경되었습니다. 주요 차이점 중 하나는 영구 알림이 없는 시작 된 서비스는 활동이 사라질 때 백그라운드에서 실행될 수 없습니다. 즉, 시작 된 서비스를 연결 하는 영구 알림이 있어야 합니다. 또한 다른 방법으로 시작 된 서비스를 시작 -startForegroundService().

그리고 당신은 포그라운드에이 시작 된 서비스를 이동 하 고 그것에 영구 알림을 연결 하기 위해 5 초, 그렇지 않으면 ANR을 얻을 것 이다. 이 모든 예제와 함께 아래에 설명됩니다. 다음은 Messenger 인터페이스를 사용하는 간단한 예제 서비스입니다. 바인드 /바인딩 해제 메서드를 사용하여 시작하고 중지하는 백그라운드 서비스를 사용하여 응용 프로그램의 간단한 예를 제공 할 수 있습니까? 나는 반 시간 동안 그것을 위해 인터넷 검색을하고 있었지만, 그 예는 startService / stopService 메서드를 사용하거나 나를 위해 매우 어렵다. 감사합니다. 클라이언트가 해야 할 일은 서비스에서 반환된 IBinder를 기반으로 메신저를 만들고 send()를 사용하여 메시지를 보내는 것입니다. 예를 들어 서비스에 바인딩하고 MSG_SAY_HELLO 메시지를 서비스에 전달하는 간단한 활동은 다음과 같습니다. 그런 다음 어떤 시점에서 UI가 서비스에서 바인딩되지 않고 장기 실행 중인 작업을 수행하는 중간에 있는 경우 onDestroy()가 만들어지고 삭제됩니다. 앱 요구 사항이 바인딩 된 서비스가 UI 구성 요소의 수명 주기가 끝난 후에도 계속 실행되어야 하는 경우 이를 시작하고 포그라운드로 이동하여 영구 알림을 표시해야 합니다. 이렇게 하면 바인딩 및 시작 된 서비스가 실행 되는 동안 계속 실행 됩니다., 또는 사용자가 보류 중인 의도를 실행 하 여 그것을 죽일 결정 될 때까지 (위의 예제와 같이) 서비스를 중지 합니다. 예를 들어 바인더 구현을 통해 클라이언트가 서비스에서 메서드에 액세스할 수 있도록 하는 서비스가 있습니다.

Spread the love