android - AsyncTaskLoader 和 Loader 有什么区别?

标签 android android-loader

无法理解何时需要使用 Loader 以及何时需要使用 AsyncTaskLoader?我阅读了这些类(class)的文档,但我理解得很差。据我了解,Loader 允许执行后台工作,因此它必须在非 GUI 线程中启动,不是吗?为什么AsyncTaskLoader做的都是一样的?我已经很困惑了。
请有人向我解释更多细节。

最佳答案

所有 Loader 方法均在主线程上调用 - Loader 不在后台线程上执行任何工作。这允许您使用任何您想要的加载机制 - 无论是单独的线程、对另一个组件的回调还是其他任何东西。

AsyncTaskLoader 扩展了 Loader 并添加 loadInBackground() ,专门在后台线程上调用的方法。它只是简单情况下的一个便利类。

无论哪种情况,加载器的真正作用是使加载数据生命周期感知,如 this blog post 中所述。 - Loader(因此,AsyncTaskLoaders)可以在屏幕旋转等配置更改中幸存。该博客包含许多 AsyncTaskLoader 示例,使用带有更改观察器的 AsyncTaskLoader 以及从另一个数据源获取数据的 Loader使用回调。

关于android - AsyncTaskLoader 和 Loader 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322743/

相关文章:

android - 在 flutter 中禁用粘贴并从 textformfield 中选择所有功能按钮

Android 选项菜单图标不会显示

android - restartLoader 和 onContentChanged 的​​区别

android - LoaderManager 和 CursorLoader 在 ViewPager 的 Fragment 中不起作用

android - CursorLoader 连接到错误的 ContentProvider

java - 使用 SimpleAdapterCursor swapCursor() 交换游标

java - 如何从 Intent 中获取两种类型的文件?

java - Android:同时从加速度计和陀螺仪获取数据

java.lang.IllegalStateException : ArrayAdapter requires the resource ID to be a TextView 错误

java - 我怎样才能实现一个简单的 AsyncTaskLoader?