2012-09-18 122 views
0

這是一些設計上的具體問題,但我正在尋找正確的建議。multiple asyntask

在我的應用程序中,我有6頁A,B,C ...每個將從服務器下載數據並顯示它。在這種情況下,下面提到的方法哪個好。

1.適用於每個A,B,C內寫的AsyncTask類 2.write單獨asyntasks像asyntaskA,asyntskB等對於每個這些活動的 3.寫入每個活動的通過requestcontroller類的單一的AsyncTask和路由請求它通過傳遞上下文,網址參數的

如果第二個方法是採取,是否有可能運行一個Activity,另一個Activityonpause狀態,同時其asynctask仍在運行產生asyctask的實例?

+1

默認情況下,在較新的Android版本中,所有'AsyncTask'都在全局單個'Thread'上執行。如果您遇到任務完成緩慢,請閱讀[執行順序](http://developer.android.com/reference/android/os/AsyncTask.html)部分。 – zapl

+0

正如zapl提到的,線程池的行爲在不同的操作系統版本中是不同的。查看[這裏](http://stackoverflow.com/questions/10995281/what-c​​hange-did-really-happen-in-async-task-after-android-gingerbread/10996600#10996600)快速追蹤歷史關於AsyncTask。 – yorkw

回答

0

多個AsyncTasks沒有問題。在我的一個應用程序中,我有一個帶有圖像的網格視圖,並且每個圖像都有一個AsyncTask加載並生成縮略圖圖像。他們都很好地並行運行。

1

在每個頁面中,如果您正在執行相同類型的操作(如在這種情況下,下載數據並顯示它),則無需單獨編寫AsyncTask類。只需創建您需要的實例並調用​​方法即可。 AsyncTask類將以線程安全方式處理此問題。

您的問題的第二部分有點不清楚,但如果您的意思是在活動之間切換,則可能會出現單個AsyncTask的多個實例。您需要保存並恢復活動狀態。

如果您執行的操作非常耗時(例如超過幾秒鐘),則使用AsyncTask並不安全。更好的選擇將是Service