Я работаю над сервисом android, эта служба предоставляла интерфейс AIDL для приложений. Теперь приложение вызывает функцию GetData() с использованием интерфейса AIDL, эта функция реализована в Service, она выполняет некоторую работу в сети , подключиться к серверу и получить некоторые данные, эта сетевая транзакция происходит в фоновом потоке, проблема в том, что я хочу, чтобы функция GetData() не возвращалась до завершения сетевой операции, результат исходит от сервера, и я хочу вернуть его в GetData(), Функция GetData возвращается немедленно, и сетевая операция в фоновом потоке продолжает работать параллельно, как этого избежать, не может вызвать работу сети также в основном потоке. Я читал о countDownlatch, это только возможное решение?Вызов блокировки/синхронной функции в AIDL
Service Main Thread
GetData
GetDataFromServer-----------> in Background thread
/*this is problem */ GetData returns; |
|
|
communication in progress
|
|
|
/*I want GetData should return here <-------------------transaction complete
Я думаю, что это не блокирование в природе, мне нужно блокирование/синхронное поведение – logonmanish