AsyncTask现在是否已弃用AsyncTaskLoader?

Ala*_*ACK 4 android

因为AsyncTaskLoader一切都AsyncTask可以做到,并且还具有内置的最佳实践功能,例如线程复制和预先成熟的死亡预防.

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

hqt*_*hqt 5

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

在每种情况下,都有不同的处理和避免方式.但请记住以上流程以获得最简单的解决方案.


Par*_*hat 5

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

Android ASOP项目中的commit@deprecated通知:

@deprecated 改用标准java.util.concurrentKotlin 并发实用程序


Bla*_*der 4

AsyncTaskLoader 仅适用于在 Activity 或 Fragment 中加载数据。AsyncTask 更加通用,可以在任何类型的组件中执行任何类型的后台操作。还有一些替代方案,如 RxJava、HandlerThreads、简单线程等,但它肯定不会被弃用。