2012-11-29 18 views
2

AsyncTask主要作爲運行定義明確的計算或任務的解決方案。經典的例子是一個下載器作爲一個AsyncTask,它提供了一個URL,更新了UI的進度,並在完成時退出。在AsyncTask運行時,是否添加/更改輸入到AsyncTask是否有一種合理的(不是很好的方法)?也許設置AsyncTask必須處理的項目隊列,然後從主應用程序更改該隊列......?例如,這會「打破」AsyncTask模型嗎?Android:是否可以與AsyncTask交互/更新?

+0

一個普遍接受的方式是爲每個新項目創建一個新的asynctask來處理。使用自定義的執行者,你的任務可以被序列化,也使得它看起來很像一個隊列 – njzk2

+1

你可能要檢查的'IntentService'類,如果你想陸續 –

+1

+1到@馬特·基羅斯執行一個任務。不建議生成多個長時間運行的異步任務。而且,不同的操作系統版本的行爲可能會有所不同。服務或只是線程/處理程序等似乎是在你的情況下更好的選擇。 –

回答

2

是的,你可以。 AsyncTask是已經通過UI線程的通信機制生成的線程。但是,此通信僅從AsyncTaskUI,而不是您需要的相反方向。

另外,同時AsyncTask Android中的最大數量在幾個API的版本爲1。

要實現從UIAsyncTask的線程安全通信,您需要使用HandlerBlockingQueue類。

個人而言,我不會這樣做。我會直接使用ThreadHandlerBlockingQueue

問候。

1

是的,你可以簡單地通過從由您的活動管理的同步採集得到一個對象在doInBackground()metheod做到這一點。

相關問題