2013-07-25 16 views
2

我無法在AsyncTask和IntentService上進行調用。 我正在開發一個具有用戶註冊活動的android應用程序。當用戶在註冊活動中輸入用戶名時,我必須通過向服務器發送HTTP請求來檢查用戶名是否已被佔用。來自服務器的響應是帶有用戶名的JSON對象。AyncTask和IntentService何時使用?

請幫我打電話來設計背景用戶名檢查AsyncTask/IntentService的優點和缺點。

回答

3

如果您使用的是AsyncTask,那麼您在此不需要IntentService。如果你發佈你的代碼,我們可以告訴你你可能做錯了什麼,但是用AsyncTask在一個線程上發出一個HTTP請求是非常簡單的。

這裏有一個如何使用它用於此目的的一個很好的例子: http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

基本上的AsyncTask僅僅是圍繞一個主題,讓您頂嘴顯示線程看中包裝。你可以通過一個線程來獲得完全相同的結果,這個線程可以執行你的HTTP調用,而Runnable可以更新你的顯示,你的線程可以用Handler來調用。

1

從這個有用answer

您應該使用那些 緊密結合的活動,像什麼你目前要做的短重複任務的的AsyncTask。 IntentService更適合於計劃任務(重複或 ),它應該在後臺運行,與您的活動無關。

所以這個建議也與你同行。

除此之外,我會建議你看看到android volley

1

IntentService和的AsyncTask是沒有可比性呢。

IntentSerive

  • 的Android部件需要在AndroidManifest註冊。
  • 使用工作隊列設計模式。多個請求放入一個隊列並逐個處理。
  • 使用自己的工作線程進行處理。
  • 異步:開始,你發送和Intent,Android系統查詢它的本地系統來找到合適的服務組件。這意味着IntentService可能需要一段時間才能啓動。
  • 它在AndroidManifest中註冊,意味着具有啓用權限,其他應用程序將能夠通過Intent訪問它。
  • 子類語境

AsyncTask

  • 又一個花哨的Java類
  • 必須創建和主線程中執行的。
  • 使用後臺線程進行操作。
  • 在其Java範圍之外不可訪問。
  • 執行多個時間需要多個實例
  • 方便的設計模式做任何後臺任務更新UI
  • 你要通過上下文作爲參數來使用它,
  • 執行,當用戶調用執行開始()。沒有意圖解決要求。
+0

我假設兩者都是異步運行的,對不對?爲什麼不能比較呢? – geekgugi

+0

我在Asyctask上最後添加了一行。當兩者都爲相同的目標而設計時,比較和基準測試的效果會更好。可以說Service vs IntentService或AsyncTask vs AsyncTaskLoader。 – minhaz

+0

你的意思是說使用AsyncTask/Service可以實現的目標無法通過計數器部分實現嗎? – geekgugi

相關問題