0

我想构建一个“智能下载器”,可以在后台下载图像(使用 AsyncTask)。有两个Activity,A和B。在Activity A中,我可以选择我要查看的图片列表,(如果没有下载过就先下载)。然后进入活动 B,这里我启动了一个异步任务来在后台和 UI 线程中下载图像,将图像显示给用户。

有一些大型列表可能需要几分钟才能完成下载。一个棘手的问题是,当 asynctask 仍在下载列表时,用户可能会退出活动 B(回到活动 A。(我知道即使活动 B 被破坏,异步任务仍将继续工作)。但如果此时用户选择另一个要查看的列表(然后进入活动B)。我想停止之前的任务一段时间,开始先下载新列表,然后是旧列表。我的想法是检索之前的asynctask并修改下载顺序。但我不知道如何检索异步任务,我搜索了一些关于重新创建异步任务的问题,但它们都是关于重新配置后的(比如旋转屏幕)。有没有办法检索后台工作的异步任务,在我销毁活动并重新创建它之后。

谢谢!

4

1 回答 1

0

销毁 Activity 后,AsyncTask 就消失了。因此,如果您想避免从头开始运行后台操作,AsyncTasks 并不是最佳解决方案。

我认为您应该构建您的应用程序以使用 IntentService 下载图像。在活动 A 中,选择图像列表。选择后,启动 IntentService 以下载图像。一旦 IntentService 完成,它可以通知用户操作完成或将本地广播消息发送回活动。在任何一种情况下,即使用户已经离开活动,工作也没有消失。如果活动被破坏,您可以确定下载是否完成,如果是,则显示图像。如果没有完成,您可以放置​​一个活动指示器。

于 2013-07-26T22:59:05.433 回答