有关Loader加载器的使用方法和总结
来源:互联网 发布:工艺流程优化 编辑:程序博客网 时间:2024/06/06 13:01
Loader 加载器(加载任务) 3.0之后出现的类
作用:类似于AsyncTask异步任务,提供一个子线程进行数据的加载,并且会在子线程执行结束之后自动调用指定方法,在方法中根据加载的数据处理UI的更新即可。
1.使用步骤
(1)LoaderManager 加载管理器:用于稍后启动加载器
获取方式:
如果获取的是android.app包内的LoaderManager:继承Activity,调用getLoaderManager方法即可;
如果获取的是support.v4包内的LoaderManager:继承FragmentActivity,调用getSupportLoaderManager方法即可;
(2)通过LoaderManager对象调用initLoader方法启动加载器
Loader loader = lm.initLoader(id, args, callback);
参数1:int id, 给当前启动的加载器设置唯一标识
参数2:args,初始化Loader对象的参数,可以为null
参数3:callback,LoaderManager.LoaderCallbacks的实现,LoaderManager调用来报告
Loader事件,即给当前启动的加载任务提供回调接口,接口中的泛型用于指定数据加载结果的类型
LoaderManager.LoaderCallbacks接口中的方法:
onCreateLoader(int id, Bundle args)
onLoadFinished(Loader<D> loader, D data)
onLoaderReset(Loader<D> loader)
(3)创建一个AsyncTaskLoader的子类,并且,在onCreateLoader方法中将给子类对象返回
AsyncTaskLoader Loader的子类,用于处理任意的加载操作,如读取数据库,连网读取数据等。
注: 在创建子类时,该子类必须是外部类或者静态内部类
(4)重写子类中的相关方法,并在AsyncTaskLoader的子类手动添加onStartLoading方法,并且在该方法中手动调用forceLoad方法(如果不添加,则程序不会执行下去)
(5)在loadInBackground方法中处理数据的加载,将加载结果作为该方法的返回值返回
(6)在onLoadFinished方法中获取加载结果,刷新页面即可
2.关于Loader和AsynTaskLoader中的细节问题:
1. AsyncTaskLoader为Loader的子类。
2. 关于LoaderCallback接口的作用:为了重写接口中的抽象方法,因为这些方法代码加载过程中的一些特殊时刻,如开始或者结束的时候
3. 关于LoaderCallback接口中的方法和AsyncTaskLoader子类中的方法:
a) 这些方法中只有loadInBackground方法中的代码时运行在子线程中,其余方法均为运行在主线程中
b) 可以在AsyncTaskLoader的子类中手动添加方法:deliverResult(Cursor data)参数代表数据加载的结果该方法会onLoadFinished之后运行,也可选择在此方法中更新页面,此方法也可不写
4. initLoader方法中的参数1和2
a)参数1: int id ,给启动的加载任务分配一个唯一标识,当通过LoaderManager对象多次调用initLoader方法时,根据每次传递的id值是否相同进行判断,如果相同,不再重新运行onCreateLoader等流程,而是直接运行onLoadFinished方法,调用之前下载好的数据进行显示,如果不相同:重新运行onCreateLoader等流程,创建新的Loader对象,进行新一次数据加载
如果想要让相同id的Loader重新运行,可选择使用restartLoader方法,该参数会被自动传递到onCreateLoader方法中
b)参数2: Bundle对象,该参数会被自动传递到onCreateLoader方法中
3.Loader的特点:
1、对每个Activity和Fragment都有效
2、提供了异步加载数据的机制
3、监视数据源的一举一动,并在内容改变时传送新的结果
4、由于配置发生变化而重新被创建后,它们会自动重新连接到上一个加载器的游标,所以不必重新查询数据
- 有关Loader加载器的使用方法和总结
- Loader加载器的使用
- sql loader的使用方法
- 有关rollup和cube的使用方法讨论
- 有关rollup和cube的使用方法讨论
- Android的加载器(loader)
- Android异步加载器Loader的使用
- webpack---用到过的加载器loader
- 使用Universal-Image-Loader总结的图片加载工具类
- java 类加载器(Class Loader)之概括性总结
- Android开发总结笔记 Loader(加载器) 1-2-13
- Oracle SQL LOADER的使用方法
- Loader(加载器)
- loader(加载器)
- Android Loader 加载器
- Loader加载器
- webpack loader加载器
- 有关solaris的使用方法
- 信用卡号校验
- sass列表函数
- Leetcode:258. Add Digits(JAVA)
- Linux精讲——用户名文件和密码文件
- 邮票问题
- 有关Loader加载器的使用方法和总结
- uva 11134 传说中的车 从简单情形入手
- C++ char*,const char*,string的相互转换
- 一文读懂卷积神经网络(转载)
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
- Uva839——Not so Mobile
- OpenCV学习
- Android Drawable 那些不为人知的高效用法
- java NIO