异步任务与服务下载数据

Async task versus service to download data

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

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

谢谢!

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

AsyncTask -- AsyncTask 操纵线程 and/or 处理程序,如果你可以用 Looper 和其他东西做得更好,为什么要费心呢? AsyncTask 被设计成 class 围绕 Thread 和 Handler 的助手,它应该理想地用于短操作(最多几秒钟。).. 你怎么能告诉生产模式是否不会花很长时间?可能网络不好,网络慢,网络堵塞,phone 重新启动 - 所有这些都可能使您的下载损坏或未完成..我是应用程序的用户,当我无所事事地浪费捆绑包时我会很生气..

如果你问我,就用

服务 --Service 被制作成 运行 而不管 app/screen 是可见的,如果与 UI 通信则制作成 运行 如果不继续下载并保存它, AsyncTask 不构成通用线程框架。总是使用线程,它很酷,我们都喜欢它。

以上回答都有优点。但生命周期问题是您应该考虑的最重要的事情。例如,假设您使用 asyncTask。所以用户开始下载并突然 he/she 旋转屏幕并且因为你将 asyncTask 生命周期绑定到 activity 另一个 asyncTask 操作将被启动并导致强制性10mb 下载。所以考虑到这一点,你应该一起使用 serviceasyncTask 来维护生命周期问题和 UI 线程网络问题。

update: Intent-service是一个更好的解决方案,因为它在自己的线程中接收请求,当它无事可做时就下线