大多数人使用asynctask进行长时间运行而不是线程。
但是文档说:
AsyncTask旨在成为Thread和Handler的辅助类 并不构成通用的线程框架。 AsyncTasks 理想情况下应该用于短期操作(几秒钟的时间) 大多数。)如果你需要保持线程长时间运行, 强烈建议您使用提供的各种API java.util.concurrent包,如Executor,ThreadPoolExecutor和 FutureTask。
我的问题是如果ui更新不是一个问题,当我使用asynctask进行长时间运行的后台操作时,我应该面对的问题是什么?
答案 0 :(得分:1)
AsyncTask与活动的生命周期紧密相关,因此在配置更改/其他事件中很容易混淆其状态。
就个人而言,我建议您使用HTTP库,例如Ion或类似的。它易于使用,并为您提供开箱即用的进度控制。
答案 1 :(得分:0)
为了在Android应用程序中下载大量文件或执行许多异步和耗时的操作,我将使用以下元素:
此外,Android 5内置了所谓的JobScheduler,其功能类似于Android优先级作业队列,但如果你想支持 pre-Lollipop 设备,你应该选择第一个解决方案。
如果您有单个任务且不需要任务队列,则可以在服务中使用RxJava而不是Android优先级作业队列。