asynctask活动之间共享

asynctask活动之间共享

问题描述:

我的应用程序下载文件(5-12MB一块),并从外部存储访问它们。由于下载需要一两分钟,当一个人不在WiFi上时,我希望能够在用户到达他们需要的活动之前开始下载,以便他们不必等待。asynctask活动之间共享

AsyncTask似乎是最好的方法,但后来我意识到未来的活动(以我的理解)将无法检查AsyncTask本身的进度,他们可以做的最好的方法是继续检查查看文件是否可读......但如果任务仍在运行或丢失网络连接并需要重试,该怎么办?

如果它很快就会完成,那么不分青红皂白地重新创建AsyncTask并再次下载文件似乎是一种浪费。

有没有办法从未来的活动中访问AsyncTask(特别是其状态),还是有更好的范例我应该看?

你可以创建一个服务,在后台下载你需要的东西。 完成后,您可以通过意图告诉您的应用程序内容已准备就绪,并通过stopSelf()停止服务。因此,即使在主屏幕上,您的下载也一直在继续。 因此,请确保您创建通知,告诉用户并给他取消的机会。 :)

编辑:当然,你可以使用服务内的任务。由于服务不会产生自己的线程,无论如何这可能是一个好主意。

+1

对于'Service'中的后台线程,考虑'IntentService'。 – CommonsWare 2011-03-20 21:24:51

+0

我正在查看IntentService,但我没有看到检查服务状态的方法。我可以让它发送通知,但是如何让UI线程检查它是否仍在运行? – Turnsole 2011-03-20 22:25:01

关于如何设计应用程序用于这种目的有一个很酷的解释 - Developing Android REST client applications

+0

链接已损坏。 – powder366 2017-01-01 11:46:39

+0

@ powder366链接已被修复。谢谢指出。 – 2017-01-02 15:11:25