关于 Loaders
Loaders 是 Android 3.0 添加进来的,Loaders 让在 Activity 和 Fragment 之间加载数据变的很简单。Loaders 有一下几个特性:
在任何 Activity 或者 Fragment 中都是有效的。提供了异步的数据加载。Loaders 可以监视源数据,并且在源数据发生改变时传递改变后的新数据过来(自动更新UI数据)。在配置改变的时候(例如屏幕旋转后),Loaders 会自动重新连接最后创建那个 Loaders 。所以我们不需要自己手动去更新数据。
Loaders 的几个重要的API
LoaderManager
一个用于管理 Activity 或 Fragment 的 Loader 实例的抽象类。它帮助应用管理在 Activity 或 Fragment 生命周期中进行的长时间操作。最常用的是 CursorLoader (操作ContentProvider)这个 Loader,同时也提供自定义 Loader
满足其他类型的数据加载。需要注意的是:每一个 Activity 或 Fragment 中只有一个 LoaderManager ,但是 LoaderManager 可以管理多个 Loader。
LoaderManager.LoaderCallBacks
这是 LoaderManager 管理数据交换的回调接口。它有三个方法需要定义:
onCreateLoader() — 根据给定的一个ID返回一个新的Loader。onLoadFinished() — 当 onCreateLoader() 方法创建的 Loader 完成数据加载后回调。onLoaderReset() — 当之间创建的 Loader 被重置时调用,同时让此 Loader 中的旧数据不可被获取。
Loader
用于执行异步数据加载的抽象类,是一个 Loader 的基类。你可以使用 CursorLoader 加载数据,也可以去继承 Loader 去实现自定义的加载。Loader 动态的传递更新数据。
AsycTaskLoader
看名字就知道,使用的 AsycTask 异步实现加载数据的 Loader。
CursorLoader
继承自 AsycTaskLoader,用于加载 ContentProvider 提供的数据。
CursorAdapter
既然 Loader 实现的数据的异步加载,那么将数据和UI如何结合呢?这里 Android 提供了 CursorAdapter 适配器用于将数据显示到 UI 控件上。常用的有 SimpleCursorAdapter (间接继承自 CursorAdapter)。