2012-11-09 21 views
0

我創建了一個遠程服務,負責所有客戶端 - 服務器通信。 我已經使用了服務,因爲很少有分離的應用程序會使用相同的通信套接字,並且沒有其他方式在應用程序之間「共享」套接字(據我所知)。使用套接字創建android通信服務發送對象類型

該服務很好,可以啓動一個套接字連接,發送和獲取原始對象(如int,String等),並且在我的應用程序之間共享相同的套接字時效果很好。

至於現在,所有偉大和一切正常。 該問題始於不同的對象類型。 我不知道如何使我的服務支持通過套接字傳遞「對象」。 我見過一個沒有道理的解決方案 - 使用包裹。 for example

在這種情況下,我需要爲任何希望我的服務支持的對象類型創建.AIDL文件。

難道沒有辦法只爲我的服務使用「對象」類型嗎? 任何其他想法來克服我的障礙?

謝謝, Lioz。

回答

0

Android IPC使用Parcelable接口來編組/解組數據類型。由於Object沒有實現它,你不能只傳遞對象。您可以創建自己的根類型,但由於每種類型的對象都具有不同的設置屬性,所以這些屬性不會有用。

請參閱AIDL文檔中的passing objects。通過這個應該足夠了。

+0

意味着唯一的方法是實現分離的.AIDL爲每個對象類型我想使用?沒有其他更簡單的方法滿足我的需求嗎? (在幾個應用程序之間共享套接字並通過它發送\獲取對象類型)。謝謝 – HFDO5

+0

您可以嘗試在您的應用程序級別轉換編組/解組對象。例如,將它們轉換爲發送端的字符串,並在接收端將它們轉換回原來的類型。將它們轉換爲字節數組會更高效,但可能會更復雜。 – auselen

+0

謝謝,看起來這是我唯一有用的解決方案。我將開始將數據轉換爲字符串... – HFDO5

相關問題