私はAndroidサービスに取り組んでいます.このサービスはアプリケーション用のAIDLインターフェースを提供しました.今、アプリケーションはAIDLインターフェースを使用して関数 GetData() を呼び出します.この関数は Service に実装されています.ネットワーク操作を行い、サーバーに接続し、いくつかのデータを取得します.バックグラウンド スレッドでネットワーク トランザクションが発生します。問題は、ネットワーク操作が完了するまで関数 GetData() が返されないようにすることです。結果はサーバーから取得され、GetData() に返されます。GetData 関数はすぐに返され、ネットワーク操作はバックグラウンド スレッドで行われます。これを回避するには、メインスレッドでもネットワーク操作を呼び出すことができません。countDownlatch について読みましたが、それは可能な唯一の解決策ですか?
Service Main Thread
GetData
GetDataFromServer-----------> in Background thread
/*this is problem */ GetData returns; |
|
|
communication in progress
|
|
|
/*I want GetData should return here <-------------------transaction complete