Asynctask是否可以安全地使用大型下载而不是线程?

时间:2015-05-18 09:00:14

标签: java android multithreading android-asynctask

大多数人使用asynctask进行长时间运行而不是线程。

但是文档说:

  

AsyncTask旨在成为Thread和Handler的辅助类   并不构成通用的线程框架。 AsyncTasks   理想情况下应该用于短期操作(几秒钟的时间)   大多数。)如果你需要保持线程长时间运行,   强烈建议您使用提供的各种API   java.util.concurrent包,如Executor,ThreadPoolExecutor和   FutureTask。

我的问题是如果ui更新不是一个问题,当我使用asynctask进行长时间运行的后台操作时,我应该面对的问题是什么?

2 个答案:

答案 0 :(得分:1)

AsyncTask与活动的生命周期紧密相关,因此在配置更改/其他事件中很容易混淆其状态。

就个人而言,我建议您使用HTTP库,例如Ion或类似的。它易于使用,并为您提供开箱即用的进度控制。

答案 1 :(得分:0)

为了在Android应用程序中下载大量文件或执行许多异步和耗时的操作,我将使用以下元素:

此外,Android 5内置了所谓的JobScheduler,其功能类似于Android优先级作业队列,但如果你想支持 pre-Lollipop 设备,你应该选择第一个解决方案。

如果您有单个任务且不需要任务队列,则可以在服务中使用RxJava而不是Android优先级作业队列。