我想编写一个连接到远程服务的模块。
开发人员可以在他们的应用程序中使用该模块连接到特定的(蓝牙)硬件。然后它应该连接到一个可以在市场上单独更新的远程服务。
因为远程服务只允许同时使用它的所有应用程序有一个线程(只有一个蓝牙连接),所以我选择了信使方法而不是 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...
提前致谢。我希望我的问题有点可以理解...... ;)
/编辑:我想要一些从服务器返回数据的方法。喜欢
public ResponseData returnResponse(Data dataToSend)
但我等不及服务的返回,因为我被困在阻止处理程序返回的线程中......