既然AsyncTaskLoader
一切都AsyncTask
可以做,并且还具有内置的最佳实践功能,例如线程复制和过早死亡预防。
有理由再使用AsyncTask
吗?还是我应该AsyncTaskLoader
到处盲目使用
既然AsyncTaskLoader
一切都AsyncTask
可以做,并且还具有内置的最佳实践功能,例如线程复制和过早死亡预防。
有理由再使用AsyncTask
吗?还是我应该AsyncTaskLoader
到处盲目使用
Service
或IntentService
某些后台作业机制。AsyncTaskLoader
.AsyncTask
因为 AsyncTask 在您的活动暂停/销毁/配置更改时继续运行......在这种情况下,是小心你会有内存泄漏/活动对象为空。你必须自己处理。每种情况,都有不同的处理和避免方法。但请记住上面的流程以获得最简单的解决方案。
在 2017 年提出这个问题时,AsyncTask 仍未被弃用。但是,它在 Android 11 中已被弃用,因为 AsyncTask 需要进行大量检查以避免内存泄漏。
Android ASOP项目中的commit@deprecated
有通知:
@deprecated 请改用标准
java.util.concurrent
或 Kotlin 并发实用程序。
AsyncTaskLoader 仅对在 Activity 或 Fragment 中加载数据有用。AsyncTask 更加通用,可以在任何类型的组件中进行任何类型的后台操作。有 RxJava、HandlerThreads、简单线程等替代方案,但它肯定不会被弃用。