我想編寫一個連接到遠程服務的模塊。Android:調用遠程Messenger服務的同步方法
該模塊可供開發人員在其應用程序中用於連接特定(藍牙)硬件。然後它應該連接到一個單獨的遠程服務,可以單獨在市場上更新。
由於遠程服務只允許同時使用它的所有應用程序只有一個線程(通過藍牙只有一個連接),所以我選擇了使用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)
,但我不能等待該服務的回報,因爲那時我被困在線程塊什麼在處理程序從返回...
通過你的apk,以及一個公共API,必須包含在其他想要使用該服務的應用程序中? – zapl 2012-04-19 23:00:12
你讓我了。 ;)圖書館有附加功能,並應儘可能簡單地訪問服務 - 因此需要一個同步方法 – domenukk 2012-04-20 09:16:45