2012-11-09 2 views
0

모든 클라이언트 - 서버 통신을 처리하는 원격 서비스를 만들었습니다. 동일한 통신 소켓을 사용할 별도의 응용 프로그램이 거의없고 응용 프로그램간에 소켓을 "공유"할 수있는 방법이 없기 때문에 서비스를 사용했습니다.소켓을 사용하여 안드로이드 통신 서비스 만들기 객체 유형

서비스는 훌륭하게 작동하고 소켓 연결을 시작할 수 있으며 원시 객체 (int, String 등)를 보내고받을 수 있으며 내 응용 프로그램간에 동일한 소켓을 공유하면서 훌륭하게 작동합니다.

현재로서는 모두 훌륭합니다. 이 문제는 서로 다른 개체 유형으로 시작됩니다. 소켓을 통해 "Object"를 전달하는 서비스 지원을 내릴 수 없었습니다. 필자는 소포를 사용하여 의미가없는 해결책을 발견했습니다. for example.

이 경우 서비스를 지원하고자하는 모든 개체 유형에 대해 .AIDL 파일을 만들어야합니다.

"서비스"에 "개체"유형을 사용하는 방법이 있습니까? 내 장애물을 극복하기위한 다른 아이디어가 있습니까?

감사합니다. 리오즈.

답변

0

Android IPC는 데이터 형식을 마샬링/언 마샬링하기 위해 Parcelable 인터페이스를 사용합니다. Object는이를 구현하지 않으므로 객체를 전달할 수 없습니다. 고유 한 루트 유형을 작성할 수 있지만 모든 유형의 오브젝트는 유용하지 않은 다른 세트 속성을 가지고 있기 때.입니다.

AIDL 설명서의 passing objects을 참조하십시오. 그걸 통과하기에 충분해야합니다.

+0

유일한 방법은 사용하려는 각 개체 유형에 대해 .AIDL로 구분 된 방법을 구현하는 것입니다. 내 필요를위한 다른 쉬운 방법이 없습니까? (몇 가지 응용 프로그램 사이에 소켓을 공유하고이를 통해 객체 유형을 보냅니다). 덕분에 – HFDO5

+0

응용 프로그램 수준에서 객체를 마샬링/비 정렬화할 수 있습니다. 예를 들어 송신 측에서 문자열로 변환하고 수신 측에서 다시 원래 유형으로 변환합니다. 바이트 배열로 변환하는 것이 더 효율적이지만 복잡 할 수 있습니다. – auselen

+0

감사합니다. 나에게 유일한 유용한 솔루션 인 것 같습니다. 데이터를 String으로 변환하기 시작합니다 ... – HFDO5

관련 문제