2012-07-05 207 views
0

我有一個textview,我想每次更新我的asynctask完成。從AsyncTask中onPostExecute更新textview

但是,從目前爲止,只有在使用setContentView()之前只能在onPostExecute中完成。但是由於我不知道當任務完成時用戶目前處於哪個視圖,它聽起來不像是我的一個好的解決方案。即使我可以獲得當前視圖,重繪視圖?

感謝

+0

你爲什麼不「知道用戶目前處於哪個視圖」? – Squonk 2012-07-05 22:45:13

+0

@Squonk因爲取決於用戶當前正在查看什麼活動,他可能正在看別的不是「家庭」視圖 – Johan 2012-07-05 22:48:08

+0

好,所以請使用單詞活動而不是查看(這是一個完全不同的類)。另外,要回答這個問題 - 定義一個'Interface'並讓所有的'Activities'以他們自己的方式實現它。然後你需要做的就是從'onPostExecute'調用'Interface'的相關方法。 – Squonk 2012-07-05 22:51:58

回答

0

我認爲AsyncTask是一個不錯的選擇當前的用戶界面需要通過任務進行更新時。在你的情況下,我可能會嘗試看看Service是否是更好的選擇。

+0

不好意思看看服務,謝謝 – Johan 2012-07-05 22:48:47

0

正如我所知,並始終使用AsyncTask執行重型任務而不阻塞主UI線程。手段用戶在需要完成耗時的工作時操作一些活動。 AsyncTask完成這項工作並反映UI的結果。用戶高興。如果你不知道用戶在哪裏,那麼可能AsyncTask不是一個正確的解決方案,你需要一個服務。它會完成工作併發送一個準備就緒的通知。 Tappi9ng通知將打開一些數據的活動。

0

要從工作線程修改UI線程,必須使用Handler或方法runOnUiThread(Runnable runnable)。

+0

好的,是否將asynctasks和服務視爲工作線程? – Johan 2012-07-06 07:29:05

+0

AsyncTask是一個與顯示UI的單獨線程,所以它被認爲是一個工作線程。我沒有親自使用過服務,所以我不能說他們是如何處理的。 – CSAntol 2012-07-06 17:29:28