2013-07-26 20 views
0

我想構建一個可以在後臺下載圖像的「智能下載程序」(使用AsyncTask)。 有兩個Activity,A和B.在活動A中,我可以選擇要查看的圖像列表(如果沒有下載一次,則先下載)。然後輸入活動B,在這裏我啓動一個asynctask以在後臺和UI線程中下載圖像,將圖像顯示給用戶。android asynctask在重新輸入活動後檢索

有一些大的列表,可能需要幾分鐘才能完成下載。一個棘手的問題是,當異步用戶仍在下載列表時,用戶可能會退出活動B(回到活動A(我知道即使活動B被破壞,asyntask仍然會繼續工作)。 但是,如果此時用戶選擇另一個列表來查看(然後輸入活動B),我想暫停一下前面的任務,開始下載新列表,然後是舊列表 我的想法是檢索以前的asynctask並修改下載順序,但我不知道如何檢索asynctask,我有搜索一些關於重新創建asynctask的問題,但它們都是關於重新配置之後(如旋轉屏幕)。是否有一種方法來檢索後臺工作asynctask,我摧毀了活動並重新創建它之後

Thanks!

回答

0

一旦你銷燬了一個Activity,AsyncTask就消失了。出於這個原因,如果你想避免從頭開始運行後臺操作,AsyncTasks不是最佳解決方案。

我認爲你應該構建你的應用程序使用IntentService下載圖像。在活動A中,選擇圖像列表。一旦選擇了它,就會啓動一個IntentService來下載圖像。 IntentService完成後,它可以通知用戶操作已完成,或者將本地廣播消息發送回活動。無論哪種情況,即使用戶離開活動,工作也沒有消失。如果活動被破壞,您可以確定下載是否完成,如果是,則顯示圖像。如果沒有完成,你可以建立一個活動指標。