2013-09-18 3 views
0

내가 할 노력하고 다음 다른 사람의 경험으로 찾고 있어요 :비동기 HTTP 응답 안드로이드

내가 클라이언트에서 GET 요청을 받아 안드로이드에서 실행되는 HTTP 서버를 갖고 싶어. 거기에서 서버는 쿼리 매개 변수를 Service에 전달해야합니다 (일부 경우에는 처리량이 매우 높음). 서비스가 완료되면 서버에 데이터를 다시 보내고 응답을 리턴합니다.

물론 startService (intent) 호출은 비동기식이므로 응답을 보내기 전에 처리가 완료 될 때까지 기다리는 방법을 서버에 알려주는 방법이 궁금합니다. 현재 상호 프로세스 메시징은 MessengerMessage 클래스로 수행됩니다.

어떤 종류의 디자인을 구현할 수 있습니까?

답변

2

리턴 된 IBinder 오브젝트에서 바인드 된 서비스 (onBind()을 구현하는 서비스)와 transact 호출을 사용하십시오. 또는 서비스의 동기 인터페이스를 설명하는 자체 AIDL을 작성하십시오.

바인딩 작업 자체가 비동기이기 때문에 HTTP 요청이 시작되기 전에 앱을 시작할 때 서비스에 바인딩하고 싶습니다.

그런데 왜 기능이 서비스에 있어야합니까? 서비스가 동일한 앱에있는 경우 HTTP 서버 클래스로 직접 이동할 수 있습니까?

+0

대단한 답변을 주셔서 감사 드리며 AIDL도 조사 할 예정입니다. 서버에 기능을 넣을 수는 없기 때문에 여러 서비스에 인 텐트를 보내야 할 수도 있습니다. 거래 통화 란 무엇입니까? – chopchop

+0

'Context.bindService()'를 통해 서비스에 접속하면'IBinder' 객체가 반환됩니다. IBinder에는'transact()'메소드가 있습니다. –

+0

모든 HTTP 요청마다 서비스에서 바인딩을 해제 하시겠습니까? 아니면 연결을 유지 하시겠습니까? – chopchop