AsyncTask现在是否已弃用AsyncTaskLoader?

时间:2017-05-15 23:03:28

标签: android

由于AsyncTaskLoader可以执行AsyncTask所能做的所有事情,并且还具有内置的最佳实践功能,例如线程复制和&预先成熟的死亡预防。

有没有理由再使用AsyncTask了?或者我应该盲目地使用AsyncTaskLoader无处不在

3 个答案:

答案 0 :(得分:5)

  • 当你有一个后台工作需要完成时,无论活动是否被破坏:ServiceIntentService某种后台工作机制。
  • 如果您有后台工作需要完成并再次通知用户界面:使用AsyncTaskLoader
  • 当您有后台作业需要完成并再次通知用户并继续运行虽然活动被销毁:使用AsyncTask因为当您的活动暂停/销毁/配置更改时AsyncTask继续运行...在这种情况下,请注意内存泄漏/活动对象为空。你必须自己处理。

每种情况,都有不同的处理和避免方式。但请记住以上最简单的解决方案。

答案 1 :(得分:4)

AsyncTaskLoader仅对加载Activity或Fragment中的数据有用。 AsyncTask功能更多,可以在任何类型的组件中进行任何类型的后台操作。还有像RxJava,HandlerThreads,简单线程等替代品,但它肯定不会被弃用。

答案 2 :(得分:3)

在2017年,当问这个问题时,AsyncTask仍然没有被弃用。 但是,由于AsyncTask需要进行大量检查以避免内存泄漏,因此它在Android 11中已被弃用。

这是Android ASOP项目中的正式合并提交。 他们建议的替代方法是java.util.concurrent以及Kotlin项目的协程。

https://android-review.googlesource.com/c/platform/frameworks/base/+/1156409