我正在编写一个使用 AIDL 远程调用方法的服务。我能够成功连接到该服务,并且还可以在其上调用方法。但是,如果我尝试调用 onServiceConnected() 中的方法,则会出现空指针异常。代码片段如下。
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.v(TAG, "service connected");
serviceObj = <AIDL Interface>.Stub.asInterface(service)
if(serviceObj != null) {
serviceObj.getMyMethod(); // Throws Null Pointer Exception, why???
}
}
此外,在清单中,我在服务标签中定义了以下属性:
android:process=":remote"
但是,如果我在其他地方调用 serviceObj.getMyMethods(),例如单击 GUI 按钮,我不会收到此类错误,并且方法会成功返回。此外,如果我删除上面的 ":remote" 属性,我不会使用相同的代码得到这个错误。
我想这是与在不同进程中运行应用程序和服务相关的问题,但无法找出确切原因。有任何想法吗?