想象一下,一個典型的場景,一個活動打開,需要調用REST HTTP API來獲取一些內容,並且一旦收到更新UI。很明顯,API調用需要在單獨的線程上完成,但是應該使用AsyncTask,IntentService還是其他方法完成,爲什麼?從IntentService或AsyncTask進行REST API調用?
20
A
回答
12
我會推薦IntentService
和ResultReceiver
的組合,如this post中所述。
也看看Google iosched實現這個模型。 2010版本顯示如何使用onRetainNonConfigurationInstance
,getLastNonConfigurationInstance
和一個靜態類在配置更改(即屏幕旋轉)上保持ResultReceiver
。
我已經在應用程序中成功實現了這個模型。如果您對提供的鏈接有任何疑問,請告知我們。
編輯:我忘了「爲什麼」的問題;)
AsyncTask
被tighly勢必活動,它不會很好地處理配置更改。在活動壽命內的短期任務(onResume
和之間)很好。我將HttpClient
用於我的REST API調用,連接超時和套接字超時設置爲20秒(由於移動網絡不佳...)。這意味着API調用可以持續40秒。你一定要在服務中處理這樣一個長期任務,而不是AsyncTask
。
相關問題
- 1. Android應該使用AsyncTask還是IntentService來進行REST API調用?
- 2. IntentService,Service或AsyncTask
- 3. 使用SOAP或REST進行新的Api
- 4. 使用REST API的AsyncTask
- 5. 從REST API中調用REST Api(Node.js)
- 6. 進行REST調用
- 7. 日曆提供程序:AsyncTask或IntentService?
- 8. 從AsyncTask調用AsyncTask
- 9. 從REST API調用報告
- 10. 我應該從Quartz job調用Grails控制器來進行REST API調用嗎?
- 11. IntentService vs AsyncTask登錄活動?
- 12. REST API調用或數據庫腳本
- 13. Rest API或Semi Rest API
- 14. 從Service(IntentService)和Activity執行的AsyncTask - 有區別嗎?
- 15. 使用Angular.js進行WordPress V2 API的基本REST調用
- 16. Windows Phone 8.1 Google Book REST使用HttpClient進行Api調用:HRESULT:0x80072EFD
- 17. Asynctask API調用問題
- 18. 從IntentService更新進度條?
- 19. 進行API調用並行
- 20. Rest Rest API調用ASP.NET Web API
- 21. 使用Paypal Merchant SDK或Paypal REST API進行定期付款
- 22. cURL調用REST Api
- 23. REST API調用await
- 24. Node.js Rest API調用
- 25. PHP:調用REST api
- 26. 從runnable調用asynctask
- 27. 從AsyncTask調用SensorManager?
- 28. 使用OAuth進行Spring Rest API
- 29. 使用Java Rest API進行PayPal登錄
- 30. 使用Rally Rest API進行CRUD操作
我對@hleroy有個疑問,那麼何時應該啓動IntentService OnResume(),OnStart()或OnClickEventListener(),因爲我需要使用SharedPreference在本地保存以供離線使用。舉例來說,我需要從使用Webservice的服務器(在我的情況下,WCF web api)中在UI中列出200名學生,那麼我應該在哪裏放這行代碼'//啓動intent服務//運行Intent Service // Intent downloadIntent = new Intent (this.Context,typeof(StudentIntentService)); //this.Context.StartService(downloadIntent);' –