rci*_*ati 10 service android parcelable
我编写了一个远程服务,客户端可以使用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)
Run Code Online (Sandbox Code Playgroud)
它似乎是从.aidl文件生成的代理类抛出的.
更奇怪的是,对象似乎正确传递但可能存在错误.任何的想法?
sra*_*rth 11
我也遇到过这个问题,经过一番探讨后发现了这个问题.我将发布我的解决方案,以防其他人发现在同一条船上漂流.
首先,调试远程线程在Eclipse中不起作用,除非您在远程服务上启用调试.要做到这一点,我需要运行应用程序并在我的第一个活动中设置一个断点,该活动只是绑定服务,一旦服务启动并运行我在eclipse中打开DDMS窗口并选择远程线程并按下调试按钮.现在可以跳回到java窗口并将断点添加到远程服务中并触发它们.
从那里我发现我的问题实际上是我试图在远程进程中的存根函数中对空指针对象进行操作,而后者又在返回的结果中为nullpointerexception注入了一个parcel异常,看起来就像这个原始问题所要求的那样关于.
我的解决方案只是在使用之前测试对象是否为null :)
即我在执行存根函数时添加了'if'语句,正如您所期望的那样...
if( myobject != null )
{
myobject.dosomething()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11712 次 |
| 最近记录: |