0

私は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
4

2 に答える 2

2

いくつかのインターフェイスを作成し、そのインターフェイスをクラスに実装し、ネットワークからの応答がデータをそのインターフェイス オブジェクトに渡すと、インターフェイス オブジェクトをその特定のサービスに渡します。

これはあなたを助けると思います。

于 2013-04-18T05:26:20.437 に答える