안드로이드 메신저 예제

자세한 내용은 https://developer.android.com/guide/components/bound-services.html#Messenger 참조하십시오. 여기서 주목해야 할 또 다른 중요한 점은이 클래스는 mActivityMessenger의 이름으로 자신의 메신저를 가지고 있다는 것입니다. 이 활동 메신저는 이 클래스의 처리기 개체, 즉 ActivityHandler를 통해 인스턴스화됩니다. 이 처리기는 이 활동에 바인딩된 서비스에서 반환되거나 회답되는 메시지를 수신하는 데 사용됩니다. 우리가 인터넷에 연결할 수 있도록 안드로이드에 대한, 우리는 매니페스트 / AndroidManifest.xml 파일에 인터넷 권한을 추가해야합니다 : 이 메신저가 관련 처리기와 통신하는 데 사용하는 IBinder를 검색합니다. 원격 프로세스와 통신하기 위해 서비스가 필요한 경우 Messenger를 사용하여 서비스에 대한 인터페이스를 제공할 수 있습니다. 이 기술을 사용하면 AIDL을 사용할 필요 없이 IPC(프로세스 간 통신)를 수행할 수 있습니다. 그래서 우리는 방금 받은 IBinder에서 메신저 개체를 만든 다음 서비스에 메시지를 보내는 방법을 보았습니다. 와우! 우리는 단지 안드로이드에서 프로세스 경계를 넘어 메시지를 보내는 방법을 배웠습니다. 아시다시차면 클라이언트에서 서비스를 호출하는 방법은 없지만 클라이언트는 서비스의 처리기 구현에 메시지를 배달합니다. Messenger는 모든 요청을 단일 스레드로 큐에 대기하므로 스레드가 안전하도록 서비스를 디자인할 필요가 없기 때문에 IPC(프로세스 간 통신)를 수행하는 가장 간단한 방법입니다. 우리는 안드로이드에서 서비스와 메신저를 사용하여 IPC를 달성하는 것이 얼마나 쉬운 배웠습니다.

다음 기사에서는 AIDL을 통해 사용해야 한다고 확신하는 경우에만 직접 사용해야 합니다. 메신저가 서비스에 대한 모든 호출을 큐에 대기하기 때문에 인터페이스에 메신저를 사용하는 것은 AIDL을 사용하는 것보다 간단합니다. 순수 AIDL 인터페이스는 서비스에 동시 요청을 전송한 다음 다중 스레딩을 처리해야 합니다. 지정된 처리기를 가리키는 새 메신저를 만듭니다. AIDL을 직접 사용하려면 프로그래밍 인터페이스를 정의하는 .aidl 파일을 만들어야 합니다. Android SDK 도구는 이 파일을 사용하여 인터페이스를 구현하고 IPC를 처리하는 추상 클래스를 생성하여 서비스 내에서 확장할 수 있습니다. 클라이언트가 해야 할 일은 서비스에서 반환된 IBinder를 기반으로 메신저를 만들고 send()를 사용하여 메시지를 보내는 것입니다.

This entry was posted in Non classé. Bookmark the permalink.

Comments are closed.