AsyncTaskLoader和Loader之间有什么区别?

时间:2016-03-31 01:46:00

标签: android android-loader

无法理解我何时需要使用Loader以及何时使用AsyncTaskLoader?我通过这些课阅读了文档,但我理解得很糟糕。据我所知,Loader允许进行后台工作,因此必须在非GUI线程中启动,不是吗?为什么AsyncTaskLoader做同样的事情?我已经困惑了。
请有人向我解释更多细节。

1 个答案:

答案 0 :(得分:4)

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

AsyncTaskLoader扩展Loader并添加loadInBackground(),这是一种专门在后台线程上调用的方法。对于简单的案例,它只是一个便利类。

在任何一种情况下,Loaders的真正的角色都是为了使加载数据生命周期变得清晰,如this blog post - Loader中所述(因此,AsyncTaskLoaders生存配置更改,如屏幕旋转。该博客包含许多AsyncTaskLoader的示例,其中AsyncTaskLoader使用观察者进行更改,而Loader则使用回调从其他数据源获取数据。