5

既然AsyncTaskLoader一切都AsyncTask可以做,并且还具有内置的最佳实践功能,例如线程复制和过早死亡预防。

有理由再使用AsyncTask吗?还是我应该AsyncTaskLoader到处盲目使用

4

3 回答 3

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

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

于 2018-01-23T07:05:43.220 回答
5

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

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

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

于 2019-11-08T04:55:48.810 回答
4

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

于 2017-05-16T02:50:50.213 回答