Android开发总结笔记 Loader(加载器) 1-2-13
来源:互联网 发布:caffe 找不到cudnn 编辑:程序博客网 时间:2024/05/16 08:52
加载器这个东西用得不多,据说太重,不过官方倒是推荐加载数据库数据的时候使用
Loader是在3.0之后提出的,可以让activity或者fragment中异步加载数据更容易。并且具有以下特征
- 可以用于每个Activity和Fragment
- 提供异步加载数据
- 监控数据源,如果内容发生变化马上传递新的结果
- 当系统配置发生变化(如:横竖屏切换),会自动链接最后一个加载器的Cursor。
下面是一些跟Loader相关的类
- LoaderManager:跟一个Activity或者Fragment相连的抽象类,用于管理一个或者多个Loader实例,最常用的是CursorLoader,也可以自定义。一个Activity或者Fragment只能有一个LoaderManager,但是一个LoaderManager可以有多个Loader
- LoaderManager.LoaderCallbacks:一个可以让客户端和LoaderManager进行交互的接口方法
- Loader:异步加载数据的一个抽象类,是加载的一个积累,不过一般使用CursorLoader。当然也可以继承loader自己实现一个Loader。Loader可以监控数据的变化从而传递新的结果
- AsyncTaskLoader:一个抽象的loader,内部封装了一个AsyncTask
- CursorLoader:AsyncTaskLoader的子类,通过查询ContentProvider返回一个Cursor。这个类实现了加载器的协议,并且内部封装了AsyncTaskLoader来实现后台加载数据。用这个Loader来获取ContentPrivider中的数据是最好的方式
开启一个Loader
要开启一个Loader,首先要通过getLoaderManager(v4包中是getSupportLoaderManager)方法获取一个LoaderManager的实例,然后通过initLoader()初始化
LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(0x00, null, this);
initLoader的三个参数分别是
- Loader的标示
- 要传给Loader的参数
- LoaderCallBacks的引用
当执行initLoader之后,会有两种情况
- 指定ID的Loader已经存在,前一个被创建的Loader将被复用
- 指定ID的Loader不存在,触发LoaderManager.CallBack的onCreateLoader方法
重启一个Loader
如果想要抛弃旧的数据可以使用下面这个方法。
getLoaderManager().restartLoader(0, null, this);
loader重启了之后,就可以修改搜索过滤器进行新一轮的搜索
使用LoaderManager的回调方法
LoaderManger的回调方法有三个
onCreateLoader:利用给定的ID初始化并返回一个新的Loader
onLoadFinished:前一个Loader加载数据结束后的回调
mAdapter.swapCursor(data);//在该方法里面替换掉旧的数据源
onLoaderReset:前一个Loader重置时的回调,因此会导致它的数据不可用
mAdapter.swapCursor(null);//在该方法里去掉引用
0 0
- Android开发总结笔记 Loader(加载器) 1-2-13
- Android Loader 加载器
- Android加载器Loader使用
- android 加载器loader详解
- android--加载器loader详解
- android 加载器loader详解
- Android中-Loader加载器
- Android Loader详解二:使用加载器
- Android Loader详解二:使用加载器
- Android Loader详解二:使用加载器
- Android Loader详解二:使用加载器
- Android Loader加载器使用详解
- Android Loader详解二:使用加载器
- Android的加载器(loader)
- Android异步加载器Loader的使用
- Android 之Loader(加载器)
- Android Loader(加载器)详解
- android---(Loader异步加载)
- 用java代码写的图片轮播,方便调用
- python常见模块命令(os/sys/platform)
- 容器与云 -- OpenStack 中的容器项目探索
- android.support.v7.internal.widget.ActionBarOverlayLayou
- 谱聚类算法及图分割算法
- Android开发总结笔记 Loader(加载器) 1-2-13
- Android与服务器端数据交互(http协议整合struts2+android)
- 222
- 让SQLite支持edmx可视化操作
- VisualRules接口调用(四)
- 言多必失
- webapi解决跨域 的问题
- ftp传输遇到的问题
- 非常有用的 Oracle 查询语句