1

我需要經常使用JSON Web服務(每隔5,10秒)。Android - 重複WebService調用

我有一個AsyncTask實現的webservice調用,每當我按下一個按鈕時執行,用於測試目的。

我應該使用處理程序,定時器還是AlarmManager?

我有點困惑,因爲AsyncTask創建自己的線程,但不會有任何這些方法創建另一個線程,從而創建一個線程,將創建另一個線程?

我使用AsyncTask實現它,因爲當web服務調用中出現問題時,我無法承受應用程序掛起,因此如果第一次調用失敗,如果第二次調用失敗,則不應該有任何問題,並且數據I提取將在第二次執行任務時顯示。

(GCM可能是一個解決方案,但現在我需要使用輪詢,而不是通知..)提前

感謝

+0

使用[服務](http://stackoverflow.com/a/6012786/1025599) – Nachi 2013-03-19 16:11:04

+0

你想問什麼?如何管理頻繁訪問web服務或如何每5/10秒使用webservice? – 2013-03-19 16:13:10

+0

我需要每5/10秒使用一次webservice。 – pteixeira 2013-03-19 16:15:03

回答

0

我建議你使用Handler.postDelay(Runnable r,long delayMillis)並重新啓動您的過程在所需的延遲後。

+0

他正在提出Web服務請求。這意味着他會使用HTTP,所以如果他使用處理程序,他會在UI線程上運行HTTP請求的異常。 – 2013-03-19 16:14:44

+0

誰說它在UI線程上? – mihail 2013-03-19 16:15:44

+0

處理程序一直都是,除非你確實有工作要做。 – 2013-03-19 16:16:00

0

處理程序不會創建新的線程,它們出現在UI線程中。因此,您無法對其執行HTTP請求。

我其實不會爲你的用例建議AsyncTasks。你會有請求完成亂序。另外,根據您運行的操作系統版本,它們可能並行運行,也可能不運行。

我的建議是使用線程。它們存在於Android中,如果您希望在您的活動處於前臺時持續運行某些內容,並且您只需要擔心一件事而不是N件任務,則它們是首選的卸載方法。 (如果你想運行,即使不在前臺,你需要一個服務)。

+0

如何將服務/線程設置爲每5/10秒運行一次?提供的代碼[here](http://stackoverflow.com/a/6012786/1025599)顯示瞭如何創建一個服務以及如何重複它,但我不知道如何啓動它。我是否使用MainActivity的onCreate方法啓動它? – pteixeira 2013-03-19 18:01:51