Java android远程服务运行在一个单独的进程中,并调用onserviceconnected()中的方法

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

我正在编写一个使用AIDL远程调用方法的服务。我能够成功地连接到服务,并且能够调用服务上的方法。但是,如果我尝试调用OnServiceConnection()中的方法,则会出现空指针异常。下面是代码片段

@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"