Я хочу написать модуль, который подключается к удаленной службе.Android: Синхронизация методов при вызове удаленного сервиса Messenger
Модуль может использоваться разработчиками в своих приложениях для подключения к определенному (bluetooth-) оборудованию. Затем он должен подключиться к единому сервису remotes, который может быть обновлен отдельно на рынке.
Поскольку для удаленной службы разрешено иметь только один поток для всех приложений, использующих его одновременно (только одно подключение по Bluetooth), я выбрал метод обмена сообщениями по AIDL.
Моя проблема заключается в том, что я хотел предоставить синхронный метод в моем общедоступном API, но служба возвращается в обработчике, и, насколько я понял, обработчик всегда будет ждать завершения текущей задачи ... Так есть ли способ получить ответ в другом потоке?
код синхронного метода, как хотелось бы, чтобы это было:
responseDataSync = new Sync<ResponseData>();
// Send message
Message msg = Message.obtain(null, Constants.DATA, 1, 0);
send(msg);
try {
ResponseData responseData = responseDataSync.get();
// with responseDataSync using a countdown latch to synchronize...
// but it never fires thanks to the handler.
//etc...
Спасибо заранее. Надеюсь, мой вопрос был несколько понятен ...;)
/EDIT: Мне нужен какой-то метод, который возвращает данные с сервера. как
public ResponseData returnResponse(Data dataToSend)
, но я не могу дождаться возвращение сервиса, потому что тогда я застрял в потоке каких блоков обработчика вернуться ...
у вас есть (удаленная) служба, которую вы распространяете через apk и публичный api, который должен быть включен в другие приложения, которые хотят использовать эту услугу? – zapl
Ты меня достал. ;) Библиотека имеет дополнительные функции и должна сделать доступ к службе максимально простой - отсюда необходимость синхронизированного метода – domenukk