我想知道下载文件,异步任务或服务哪个更好?
我的应用程序有八个按钮,其中一个启动一个不同的下载(下载大约10MB)。当用户点击一个或多个按钮下载数据时最好使用异步任务或服务吗?
谢谢!
答案 0 :(得分:5)
在任何情况下,您都应该使用AsyncTask
,因为即使服务也在主(GUI)线程中运行,而不应该进行任何网络连接。是否在服务或活动中运行AsyncTask
取决于您是否希望在后台继续下载。
答案 1 :(得分:2)
以上所有答案都有好处。但是生命周期问题是你应该考虑的最重要的事情。例如,假设您使用["\""a""]
。所以用户开始下载并突然他/她旋转屏幕,因为你将asyncTask
生命周期绑定到asyncTask
另一个activity
操作将被启动并导致强制性的10mb下载。因此,考虑到这一点,您应该同时使用asyncTask
和service
来维护生命周期问题和UI线程网络问题。
更新:Intent-service是一个更好的解决方案,因为它在自己的线程中接收请求,并在没有任何操作时脱机
答案 2 :(得分:1)
AsyncTask - AsyncTask
操纵线程和/或处理程序,如果您可以使用Looper
做得更好而且为什么要麻烦? AsyncTask被设计成一个围绕Thread和Handler的助手类,理想情况下它应该用于短操作(最多只需几秒钟。) .. 如何在生产模式中判断是否不是要花很长时间?可能网络不好,网络速度慢,网络堵塞,手机重启 - 所有这些都可能使你的下载损坏或未完成..我是应用程序的用户,当我浪费捆绑什么时,我很生气..
如果你问我,请使用
<强>服务强>
- Service
无论应用程序/屏幕是什么都可以运行,如果只是可用,如果没有继续下载并保存,则会与UI进行通信,AsyncTask
不构成通用线程框架。总是使用线程,它很酷,我们都喜欢它。