异步任务与服务下载数据

时间:2015-02-09 01:42:37

标签: android android-asynctask android-service android-download-manager

我想知道下载文件,异步任务或服务哪个更好?

我的应用程序有八个按钮,其中一个启动一个不同的下载(下载大约10MB)。当用户点击一个或多个按钮下载数据时最好使用异步任务或服务吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

在任何情况下,您都应该使用AsyncTask,因为即使服务也在主(GUI)线程中运行,而不应该进行任何网络连接。是否在服务或活动中运行AsyncTask取决于您是否希望在后台继续下载。

答案 1 :(得分:2)

以上所有答案都有好处。但是生命周期问题是你应该考虑的最重要的事情。例如,假设您使用["\""a""]。所以用户开始下载并突然他/她旋转屏幕,因为你将asyncTask生命周期绑定到asyncTask另一个activity操作将被启动并导致强制性的10mb下载。因此,考虑到这一点,您应该同时使用asyncTaskservice来维护生命周期问题和UI线程网络问题。

更新:Intent-service是一个更好的解决方案,因为它在自己的线程中接收请求,并在没有任何操作时脱机

答案 2 :(得分:1)

AsyncTask - AsyncTask操纵线程和/或处理程序,如果您可以使用Looper做得更好而且为什么要麻烦? AsyncTask被设计成一个围绕Thread和Handler的助手类,理想情况下它应该用于短操作(最多只需几秒钟。) .. 如何在生产模式中判断是否不是要花很长时间?可能网络不好,网络速度慢,网络堵塞,手机重启 - 所有这些都可能使你的下载损坏或未完成..我是应用程序的用户,当我浪费捆绑什么时,我很生气..

如果你问我,请使用

<强>服务 - Service无论应用程序/屏幕是什么都可以运行,如果只是可用,如果没有继续下载并保存,则会与UI进行通信,AsyncTask不构成通用线程框架。总是使用线程,它很酷,我们都喜欢它。