android – 将对象传递给远程服务的Parcel.readException

前端之家收集整理的这篇文章主要介绍了android – 将对象传递给远程服务的Parcel.readException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个远程服务,客户端可以使用 Android提供的IPC的常规机制登录,绑定似乎工作.当我去调用一个方法,我必须传递一个对象作为一个参数,因为我得到这个“好奇”的异常出现问题:
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文件生成的代理类中抛出的.

更奇怪的是,对象似乎被正确传递,但是可能是有问题的.任何想法?

解决方法@H_404_10@
我一直在遇到这个问题,经过一段时间的打扰发现问题.我会发布我的解决方案,以防其他人发现在同一条船上漂流.

首先调试远程线程在Eclipse中不起作用,除非您启用远程服务的调试.要做到这一点,我需要运行应用程序,并在我的第一个活动中放置一个断点,只要绑定服务,一旦服务启动并运行,我打开eclipse中的DDMS窗口并选择远程线程并按调试按钮.现在可以跳回到java窗口,并将断点添加到远程服务并触发它们.

从那里我发现我的问题实际上是我在远程进程中的stub函数中的空指针对象上进行操作,而这个对象在返回的结果中又引用了nullpointerexception的一个包裹异常,并且看起来像是原来的问题.关于.

我的解决方案只是在使用它之前测试对象不为空:)

即我在实现stub函数添加了’if’语句.

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

猜你在找的Android相关文章