2010-10-19 88 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

相关问题