我写了一个远程服务,客户端可以使用
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)
更奇怪的是,对象似乎被正确传递,但是可能是有问题的.任何想法?
解决方法
我一直在遇到这个问题,经过一段时间的打扰发现问题.我会发布我的解决方案,以防其他人发现在同一条船上漂流.
首先调试远程线程在Eclipse中不起作用,除非您启用远程服务的调试.要做到这一点,我需要运行应用程序,并在我的第一个活动中放置一个断点,只要绑定服务,一旦服务启动并运行,我打开eclipse中的DDMS窗口并选择远程线程并按调试按钮.现在可以跳回到java窗口,并将断点添加到远程服务并触发它们.
从那里我发现我的问题实际上是我在远程进程中的stub函数中的空指针对象上进行操作,而这个对象在返回的结果中又引用了nullpointerexception的一个包裹异常,并且看起来像是原来的问题.关于.
我的解决方案只是在使用它之前测试对象不为空:)
if( myobject != null ) { myobject.dosomething() }