2011-03-07 93 views
7

我在寫一個連接到REST/JSON web服務的android應用程序。用戶將獲取信息,上傳評論,下載和上傳圖片等。連接到一個web服務從android - AsyncTask或服務?

我知道我不應該在Activity/UI線程中保留所有這些網絡通信,因爲它會導致ANR。我感到困惑的是,我是否應該使用AsyncTask或帶有「手動」線程的服務來完成此任務;

有了服務,我只需要在webservice的API中爲每個方法提供一個公共方法。然後,我會在這些方法中實現線程化。

如果我使用了一個AsyncTask,我會創建一個幫助類,爲webservice的API中的每個方法定義AsyncTasks。

哪種方法是首選?與web服務的交互只會在用戶處於活動狀態時發生。一旦他們切換到另一個應用程序,或退出程序,就不需要與web服務進行通信。

回答

6

我建議你去AsyncTask解決方案。這是運行UI線程的請求或任何其他後臺任務的簡單直接方式。

它也很容易實現,例如, onProgressUpdate,如果您需要在運行請求時顯示某種進度條。

+1

感謝您的建議。但是,在觀看此Google IO視頻(http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html)後,我決定採用基於服務的方法。我仍然可以使用AsyncTasks來處理用戶需要服務立即反饋的實例(例如發表評論)。對於簡單的後臺任務來說,AsyncTask似乎是最好的選擇。 – football 2011-03-07 19:57:53

0

我建議IntentService,那不是更復雜的實施,肯定是更強大的,因爲它不是在ActivityLifecycle如此緊密地聯繫在一起(尤其是onConfigurationChange()