Loaders
从Android 3.0 开始,Loader 让Activity或Fragment中异步加载数据变得简单。Loader具有如下特性:
- Activity和Fragment中都可用Loader
- 异步加载数据
- 可监控加载状态
- 自动重新连接???
Loader可异步的对Content Provider或数据源执行异步操作。
API 概述
- LoaderManager 每个Activity或Fragment只有一个LoaderManager,但是可以有多个Loader
- LoaderManager.LoaderCallbacaks
- Loader
- AsyncTaskLoader 通过AsyncTask执行工作
- CursorLoader AsyncTaskLoader子类,查询ContentResoler并返回一个Cursor。
在应用中使用Loader
启动Loader
initLoader()需要三个参数getLoaderManager().initLoader(0, null, this); - 唯一的ID
- 构造Loader时需要的参数
- LoaderManager.LoaderCallbacks实现
当调用initLoader()时,如果ID已存在,上次创建的Loader会被重用,如果数据已获取,会立即调用onLoadFinished();如果不存在,会触发LoaderManager.LoadCallbacks中的onCreateLoader(),待数据完成后,会调用onLoadFinished()。
重启Loader
getLoaderManager().restartLoader(0, null, this);
LoaderManager CallBack
onCreateLoader() — Instantiate and return a new Loader for the given ID.
onLoadFinished() — Called when a previously created loader has finished its load.
onLoaderReset() — Called when a previously created loader is being reset, thus making its data unavailable.