无法理解我何时需要使用Loader
以及何时使用AsyncTaskLoader
?我通过这些课阅读了文档,但我理解得很糟糕。据我所知,Loader
允许进行后台工作,因此必须在非GUI线程中启动,不是吗?为什么AsyncTaskLoader
做同样的事情?我已经困惑了。
请有人向我解释更多细节。
答案 0 :(得分:4)
所有Loader
方法都在主线程上调用 - Loader
在后台线程上不做任何工作。这允许您使用您想要的任何加载机制 - 无论是单独的线程,回调到另一个组件,还是其他任何东西。
AsyncTaskLoader
扩展Loader
并添加loadInBackground(),这是一种专门在后台线程上调用的方法。对于简单的案例,它只是一个便利类。
在任何一种情况下,Loaders的真正的角色都是为了使加载数据生命周期变得清晰,如this blog post - Loader
中所述(因此,AsyncTaskLoaders
生存配置更改,如屏幕旋转。该博客包含许多AsyncTaskLoader
的示例,其中AsyncTaskLoader
使用观察者进行更改,而Loader
则使用回调从其他数据源获取数据。