0

我从 IntentService 中调用 AIDL服务。绑定到 AIDL 服务后,IntentService 必须将参数传递给 AIDL 服务以执行。

现在由于与 AIDL 的绑定是异步发生的,我希望 IntentService 中的代码在将参数传递给 AIDL 服务之前等待它。

伪代码:

第 1 步:绑定到 AIDL 服务

第 2 步:将参数传递给 AIDL 服务

换句话说,甚至在 STEP 1 完成之前就到达了 STEP2,因为与 AIDL 的绑定是异步的。然后我得到例外。

在第 2 步执行之前,如何等待第 1 步完成?

4

1 回答 1

0

您可以使用它ServiceConnection.onServiceConnected()来监视与服务的连接。绑定完成后,您将获得回调onServiceConnected

以下是 Android开发人员指南中的文档片段

客户端可以通过调用 bindService() 绑定到服务。当它这样做时,它必须提供一个 ServiceConnection 的实现,它监视与服务的连接。bindService() 方法不带值立即返回,但是当 Android 系统在客户端和服务之间建立连接时,它会在 ServiceConnection 上调用 onServiceConnected() 来传递客户端可以用来与服务通信的 IBinder。

于 2013-10-08T09:37:19.503 回答