Android中-Loader加载器
Loader加载器:
Android3.0(API11推出的),用来进行异步数据的加载,内部使用AsyncTask实现,通常用在数据库的加载,随后V4中推出了兼容的版本
核心
- LoaderManger
- LoaderManger.LoaderCallBacks
- Loader
Loader
- 加载器的基类
- AsyncTaskLoader是Loader的一个子类,内部使用AsyncTask处理耗时操作
- CursorLoader是AsyncTaskLoader的一个子类,主要用来加载ContentProvider中的数据
LoaderManger
- 加载器的管理者
- 主要负责Loader的回调管理,一个Activity或者Fragment中只有一个LoaderManger,一个LoaderManger可以管理多个Loader
- LoaderManger在初始化的时候,通过id去确定Loader,如果Loader不存在,那么将创建一个新的Loader,如果已经存在,将重新连接已经存在的Loader
LoaderManger.LoaderCallBacks
- 加载器加载状态的回调函数
- onCreatLoader当Loader不存在时,我们调用初始化Loader时,需要返回一个Loader对象
- onLoadFinished 当Loader执行完异步任务,获取到数据之后的一个回调,将数据返回来
- onLoaderReset 当Loader被重置时的调用,我们需要在这个回调中做资源的释放
AsyncTaskLoader
- 需要重写loadInBackground,这个方法在后台线程执行,处理耗时操作
- 我们需要在onStartLoading方法中主动调用forceLoade()方法强制进行数据的加载
下面通过一个栗子来解释
Finish的时候处理数据对象Cursor
这里可以实现一个联系人的模糊查询
在onLoadFinish的时候将Cursor对象的数据设置到Adapter上
adapter.swapCursor(data);在onLoaderReset的时候,将数据置空
adapter.swapCursor(null);
自定义的CustomLoader extends AsyncTaskLoader