0

IntentService内から AIDL サービスを呼び出しています。AIDL サービスへのバインドが完了すると、IntentService は実行のためにパラメーターを AIDL サービスに渡す必要があります。

AIDL へのバインドは非同期で行われるため、パラメーターを AIDL サービスに渡す前に IntentService のコードを待機させます。

疑似コード:

ステップ 1: AIDL サービスにバインドする

STEP 2: パラメータを AIDL サービスに渡す

つまり、STEP 1 が完了する前に STEP2 に到達するため、AIDL へのバインドは非同期です。その後、例外が発生します。

STEP 2 が実行される前に、STEP 1 が完了するのをどのように待ちますか?

4

1 に答える 1

0

ServiceConnection.onServiceConnected()サービスへの接続を監視するために使用します。バインディングが完了すると、コールバックが返されますonServiceConnected

以下は、Androidデベロッパー ガイドにあるドキュメント スニペットです。

クライアントは bindService() を呼び出すことでサービスにバインドできます。その場合、サービスとの接続を監視する ServiceConnection の実装を提供する必要があります。bindService() メソッドは値なしですぐに戻りますが、Android システムがクライアントとサービス間の接続を作成するときに、ServiceConnection で onServiceConnected() を呼び出して、クライアントがサービスとの通信に使用できる IBinder を配信します。

于 2013-10-08T09:37:19.503 に答える