Loader异步装载
来源:互联网 发布:好看的小说言情 知乎 编辑:程序博客网 时间:2024/05/21 09:37
Loader异步装载
Loader使在Activity或Fragment中异步加载数据变得简单。
Loader装载器具有如下特性:
1.它们对每个Activity和Fragment都有效
2.他们提供了异步加载数据的能力
3.它们监视数据源的一举一动并在内容改变时传送新的结构
4.当由于配置改变而被重新创建后,它们自动重连到一个加载器的游标。
Loader的数据源可以是磁盘、数据库、ContentProvider、网络或者另外进程
Loader可以在不阻塞主线程的情况下获取并发送结果数据给接受者,也就是异步
Loader有三种内置类型
Loader、AsyncTaskLoader、CursorLoader
Loader是基类,本身仅仅定义了供LoaderManager与其他Loader通讯时使用的API。
AsyncTaskLoader是一个抽象的Loader。
几乎创建的有用的Loader类都是AsyncTaskLoader的子类。
CursorLoader是AsyncTaskLoader的一个子类
CursorLoader借助ContentResolver从ContentProvider加载Cursor
Loader API概述
LoaderManager 每个Activity或Fragment只能有一个LoaderManager
但是一个LoaderManager可以有多个Loaders。
LoaderManager.LoaderCallbacks 客户端和LoaderManager交互的回调接口。
Loader 执行异步加载数据的抽象类。是loader的父类。当loaders处于活动状态时,
它应该监控其数据的来源,当内容改变时候显示新的结果。
AsyncTaskLoader 抽象的loader提供一个AsyncTask来处理工作。
CursorLoader是AsyncTaskLoader的子类,查询ContentResolver返回一个游标。这个
类实现了Loader协议,对于游标查询在一个标准的方式,建立在AsyncTaskLoader基
础上,来执行由表查询在后台线程中,以至于不会中断应用程序的UI。从
ContentProvider中实现异步数据加载,而不是通过Fragment或者Activity来执行的
管理查询,是最好的方式。
使用Loader的方式
1.启动一个Loader,获得一个LoaderManager
LoaderManager manager = getLoaderManager(0;
初始化Loader对象
Loader loader = manager.initLoader(id,args,callback);
三个参数
id 一个唯一的id标识,用于表示这个Loader
args 构造函数的可选参数,可以为空
LoaderManager.LoaderCallbacks 的实现 调用LoaderManager的调用者
例子:
manager.initLoader(id,args,callback)的调用确保了Loader被初始化
并且确保了Loader的存在。
这句话可能有两种结果
第一种,id标识的Loader已经存在,上次被创建的Loader会被重用。
第二种,如果不存在,由Id标识的Loader,initLoader()方法触发
LoaderManager.LoaderCallbacks 的onCreateLodaer()方法。
继承LoaderCallbacks回调接口,会重写三个方法
Loader子类之AsyncTaskLoader
1.Activity或者Fragment要实现LoaderManager.LoaderCallbacks接口
2.创建LoaderManager对象,通过getLoaderManager或getSupportLoader方法来实现
LoaderManager对象,否则使用前者创建即可。
3.初始化LoaderManager对象,调用initLoader方法来初始化
4.自定义Loader要继承于AsyncTaskLoader:
Loader子类之CursorLoader
CursorLoader是AsyncTaskLoader的子类。
使用方法基本与AsyncTaskLoader相同。
但要注意:
在创建CursorAdapter的时候,指明注册一个内容观察者,可以在Cursor的内容发送
变化时实现自动更新。
adapter = new SimpleCursorAdapter(this,R.layout.listview,
当数据加载完毕的时候,在onloadFinished方法中adapter.swapCursor(data)
当以前的Cursor不用的时候,不要手动关闭Cursor,
可以在onLoaderReset()中调用adapter.swapCursor(null)来放弃。
0 0
- Loader异步装载器
- Loader异步装载
- Loader异步装载器-笔记
- Loader异步装载(有demo)
- 18、Loader异步装载器
- Android第十七天 Loader异步装载
- Loader异步装载CursorLoader的案例
- 【Android基础笔记17】Loader异步装载
- Loader异步装载复习——简答版通讯录助手
- Loader装载器详解
- Loader装载器
- 使用SQL*LOADER装载数据
- Oracle SQL*Loader数据装载
- CursorLoader异步装载联系人
- Android22_Loader异步装载
- Loader异步加载
- Loader异步加载ContentProvider
- Loader异步加载ContentProvider
- ImageView
- MAC上使用apktool进行反编译
- arm中R0-R15寄存器的作用
- Excel两列数据比较,相同的保存在另外一列
- Highcharts X轴文字竖排
- Loader异步装载
- android判断app置于后台监听home键
- 表连接-全连接
- Java之transient
- Git简单使用教程(三)-创建版本库
- Linux 静态库与共享库
- JM和x264是什么关系?
- 【VC小项目】-14.1排序函数模板
- Substring with Concatenation of All Words