2015-02-05 49 views
-1

我正在開發應用程序,每8秒更新一次數據,並使用異步任務完成更新。我使用的循環來達到這個條件Thread.Sleep問題Android方法和asynctask

while(const_val > update_val) { 
new Asynctask().execute(); 
Thread.sleep(8000); 
} 

const_val將是恆定的,將不受任何其他methods.lets改變說這個值將是5.update_val將被更新和遞減時的AsyncTask調用,讓我們該值將爲10.因此,while循環會執行,直到條件爲真,並調用asynctask,sleep。

當我在上面使用while循環的一般方法則UI被鎖定,如果我用同樣的循環在另一個的AsyncTask出現了一個錯誤,說

回答

2
「創建視圖層次可以觸摸它認爲只有原來的線程」

您需要更改代碼才能啓動AsyncTask,並通過onPostExecute()方法提供更新。通過調用Thread.sleep()你正在睡覺你的應用程序的主線程(或UI線程),這是不好的。你永遠不想阻止主線程。本文可能會幫助您更好地瞭解AsyncTask和Android中的線程處理:http://po.st/Cei3m2