2011-06-23 41 views
0

我已經編寫了一個查詢我寫入的Web服務(它返回JSON數據)的應用程序。我的應用程序當前使用AsyncTask處理Web服務調用,並使用它接收的數據更新TableLayout。我希望我的應用程序定期(每秒左右)調用此Web服務並在數據庫中顯示數據,因爲它不斷更新。我怎樣才能做到這一點沒有UI線程塊?Android實時查詢Web服務

當前工作的方式是用戶按下「go」按鈕,並且AsyncTask在請求處理時顯示「加載」對話框。我希望他們按一下go按鈕並在佈局中刷新數據。我不確定構建這個的最佳方法是什麼。

回答

1

我不建議你每秒創建一個新的AsyncTask,因爲這將導致大量的對象創建和相應的內存集合。

你可以做的是創建一個AsyncTask,在Web服務的每個請求返回後更新一些內部數據結構,然後調用publishProgress(),等待適當的時間,然後向Web服務發出新的請求。在onPublishProgress()中,代碼應該從正在使用的任何內部結構(不要忘記在此使用鎖來同步訪問)從請求中獲取新信息並刷新UI。

您還需要AsyncTask有一個方法或變量,Activity可以調用它來告訴它跳出循環。

+0

謝謝..我可能會實現這樣的事情,以避免浪費內存與不斷創建新的AsyncTasks。 –

0

您可以使用一個Handler,它可以在每秒鐘後啓動一個新的AsyncTask請求。