2010-10-19 89 views
10

我編寫了一個遠程服務,客戶端可以使用Android提供的通常的IPC機制登錄,並且該綁定似乎可行。將對象傳遞給遠程服務的Parcel.readException

10-19 15:09:04.601: ERROR/AndroidRuntime(2985): FATAL EXCEPTION: main 
10-19 15:09:04.601: ERROR/AndroidRuntime(2985): java.lang.NullPointerException 
10-19 15:09:04.601: ERROR/AndroidRuntime(2985): at android.os.Parcel.readException(Parcel.java:1253) 
10-19 15:09:04.601: ERROR/AndroidRuntime(2985):at android.os.Parcel.readException(Parcel.java:1235) 
10-19 15:09:04.601: ERROR/AndroidRuntime(2985): at it.domod.commons.interfaces.DeviceManager$Stub$Proxy.sendCommand(DeviceManager.java:121) 

這似乎是從生成的代理類拋出:當我去打電話的,我有一個方法傳遞一個對象作爲參數,因爲我得到這個「奇怪」的異常,就會出現問題。 aidl文件。

更奇怪的是,該對象似乎正確傳遞,但可能有錯誤的周圍。任何想法?

+0

你能解決這個問題嗎?我有一些類似的問題。 – folone 2011-03-18 15:00:37

+3

你能不能發佈aidl文件和類似於這個的parcelable – 2011-03-20 17:50:05

+0

的代碼:http://www.anddev.it/index.php?topic=1175.0 – 2011-03-25 13:47:19

回答

11

我一直在遇到這個問題,以及在找到問題後發現了一些問題。我會發布我的解決方案,以防其他人發現在同一條船上漂流。

首先調試遠程線程在Eclipse中不起作用,除非您在遠程服務上啓用調試。要做到這一點,我需要運行應用程序,並在第一個綁定服務的活動中放置一個斷點,一旦服務啓動並運行,我將在eclipse中打開DDMS窗口並選擇遠程線程並按下調試按鈕。現在可以跳回到java窗口並將您的斷點添加到遠程服務並觸發它們。

從那裏我發現我的問題實際上是我試圖對遠程過程中的存根函數中的空指針對象進行操作,然後在返回的結果中爲nullpointerexception注入了parcel異常,並且看起來像這樣原來的問題是問。

我的解決辦法是簡單地測試對象是不是null使用它:)

之前,即我加入了「如果」語句如你所期望的存根函數的實現...

if(myobject != null) 
{ 
    myobject.dosomething() 
} 
+0

我只是把調用放在一個try/catch塊中,以避免修改自動生成的代碼:) – rciovati 2011-06-06 14:02:22

相關問題