Java android远程服务运行在一个单独的进程中,并调用onserviceconnected()中的方法
我正在编写一个使用AIDL远程调用方法的服务。我能够成功地连接到服务,并且能够调用服务上的方法。但是,如果我尝试调用OnServiceConnection()中的方法,则会出现空指针异常。下面是代码片段Java android远程服务运行在一个单独的进程中,并调用onserviceconnected()中的方法,java,service,android-service,aidl,Java,Service,Android Service,Aidl,我正在编写一个使用AIDL远程调用方法的服务。我能够成功地连接到服务,并且能够调用服务上的方法。但是,如果我尝试调用OnServiceConnection()中的方法,则会出现空指针异常。下面是代码片段 @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.v(TAG, "service connected"); serviceObj = <AIDL Interface&g
@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???
}
}
但是,如果我在其他地方调用serviceObj.getMyMethods(),比如单击GUI按钮,我不会得到这样的错误,并且方法会成功返回。此外,如果我删除上面的“:remote”属性,我不会用相同的代码得到这个错误
我想这是与在不同进程中运行应用程序和服务相关的问题,但无法找出确切原因。有什么想法吗?我终于想出来了。由于Context.startService()是一个异步调用,因此发生了一些内部崩溃/空指针异常。当onStartCommand()执行某些任务时,在serviceObj上并行调用的方法正在崩溃,因为它需要先进行一些初始化,而初始化是在onStartCommand()中进行的
android:process=":remote"