我想构建一个可以在后台下载图像的“智能下载器”(使用AsyncTask)。 有两个Activity,A和B.在活动A中,我可以选择我要查看的图像列表,(如果没有下载一次,则首先下载)。然后输入活动B,在这里我启动asynctask以在后台和UI线程中下载图像,向用户显示图像。
有一些大型列表可能需要几分钟才能完成下载。一个棘手的问题是当asynctask仍在下载列表时,用户可以退出活动B(回到活动A。(我知道即使活动B被破坏,asyntask仍将继续工作)。 但是,如果此时用户选择另一个列表进行查看(然后输入活动B)。我想暂停上一个任务一段时间,先开始下载新列表,然后是旧列表。 我的想法是检索先前的asynctask并修改下载顺序。但是我不知道如何检索asynctask,我已经搜索了一些关于重新创建asynctask的问题,但是它们都是在重新配置之后(比如旋转屏幕)。有没有办法在我销毁活动并重新创建它之后检索后台工作asynctask。
谢谢!
答案 0 :(得分:0)
一旦销毁了一个Activity,AsyncTask就消失了。因此,如果您想避免从头开始运行后台操作,AsyncTasks不是最佳解决方案。
我认为您应该构建应用程序以使用IntentService下载图像。在活动A中,选择图像列表。选择它后,启动IntentService以下载图像。完成IntentService后,它可以通知用户操作已完成或将本地广播消息发送回活动。在任何一种情况下,即使用户已离开活动,工作也不会消失。如果活动被销毁,您可以确定下载是否已完成,如果已完成,则显示图像。如果没有完成,你可以建立一个活动指标。