一 概述
Loaders从Android3.0开始引进(Loaders被翻译为装载器,它是一个异步加载数据的框架),它能在Activity或Fragment中异步加载数据;装载器具有如下特性:
- 它们对每个Activity和Fragment都有效
- 它们支持数据的异步加载
- 它们监视数据源的改变,并在数据源改变时传送新的结果
- 当由于配置改变而被重新创建后,它们会自动重连到上一个装载器的游标,所以不必重新查询数据
二 loader使用相关简介
LoaderManager
一个和Activity或Fragment关联抽象类,管理一个或多个装载器的实例,它帮助应用管理那些与Activity或Fragment生命周期相关的长时间运行的操作。最常见的方式是与一个CursorLoader一起使用,你也可以实现自己的装载器以加载其它类型的数据。 每个Activity或Fragment只有一个LoaderManager,但是一个LoaderManager可以拥有多个装载器。
Loader
一个执行异步数据加载的抽象类,它是加载器的基类。你可以使用典型的CursorLoader,但是你也可以实现你自己的子类。一旦装载器被激活,它们应该监视它们的数据源并且在数据改变时传送新的结果。
AsyncTaskLoader
一个使用AsyncTask来执行异步加载工作的抽象类。继承于Loader
CursorLoader
一个AsyncTaskLoader的子类,它查询ContentResolver然后返回一个Cursor。这个装载器类的实现遵循查询游标数据源的标准,它的游标查询是通过AsyncTaskLoader在后台线程中执行,从而不会阻塞UI线程。使用这个装载器是从ContentProvider异步加载数据的最好方式。
LoaderManager.LoaderCallbacks
一个用于客户端与LoaderManager交互的回调接口。主要有三个回调方法:onCreateLoader(),onLoadFinished(),onLoaderReset()。
三 使用Loader
一个使用加载器的典型的应用包含以下几个组件:
- 一个Activity或Fragment;
- 一个LoaderManager的实例;
- 一个依靠ContentProvider加载数据的CursorLoader;当然,你也可以继承Loader或AsyncTaskLoader实现你自己的装载器来从其它数据源加载数据;
- 一个LoaderManager.LoaderCallbacks的实现,这是你创建新的装载器以及管理已有装载器的地方;
- 一个用于展示装载器的返回数据的方式,例如使用一个SimpleCursorAdapter;
- 一个数据源,例如ContentProvider(使用CursorLoader加载数据)。
代码示例: