2012-02-09 38 views
5

我正在處理主要負責聯繫遠程服務器並顯示所提供數據的應用程序。Android中的同步服務調用

服務是基於肥皂的。爲此,我使用kso​​ap庫,但讓我們切入案例。

我一直在使用異步任務「調用服務」。 一切似乎順利,但...

服務是順序的,並傾向於'失去'我的請求,所以我沒有得到正確的結果。

所以我決定採取同步的方式來解決問題,但這樣一來我必須提供額外的裝載按鈕/酒吧等

性能是這樣可怕的。處理這種情況的最佳方法是什麼? 我可以使用什麼樣的同步,以便請求之間不會有任何競爭?

如何使用Android服務? 那些更好?

非常感謝您提供答案。

+0

你爲什麼不按順序執行AsyncTasks,只有當他們是成功的? – dmon 2012-02-09 20:32:37

+0

你是什麼意思,通過連續調用它們? – Olek 2012-02-09 20:58:21

回答

15

實際上,你可以調用AsyncTask在同步方式:

class MyTask extends AsyncTask<Void,Void,String> 
{...} 

MyTask x = new MyTask(); 
String result = x.execute().get(); 

docs pageAsyncTask

+1

感謝您的快速回復。你自己試過了嗎?所以告訴它get()我想它只是在它所執行的線程上調用join()。 get()不會暫停UI或其他任務嗎?是否有內置的機制來控制任務隊列? – Olek 2012-02-09 20:50:16

+0

我想我主要回答「同步」部分。我知道你想阻止用戶界面,直到你有迴應。至少在onPreExecute和onPostExecute中,您可以安全地啓動進度條等等。 – 2012-02-09 20:55:56

+0

其實我不想凍結用戶界面。我正在尋找一種方法來避免這種情況。我正在尋找大部分任務的同步方式。 – Olek 2012-02-09 21:10:30