我正在开发一个 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