Activity中加载器的总结
继续总结加载器
加载器可以支持在Activity或片段中异步加载数据,加载器具有以下特征:
可用于每个Activity和Fragment;
支持异步加载数据;
监控其数据源并在内容变化时传递新结果;
在某一配置更改后重建加载器时,会自动重新连接上一个加载器的游标,故无需重新查询其数据。
在应用中使用加载器:
使用加载器的应用通常包括:
*Activity或Fragment
*LoaderManager的实例
*一个CursorLoader,用于加载由ContentProvider支持的数据,可以实现自己的Loader或AsyncTaskLoader子类,从其他源中加载数据
*一个LoaderManager.LoaderCallbacks实现,可以使用它来创建新加载器,并管理对现有的加载器的引用。
*一个显示加载器数据的方法,如SimpleCursorAdapter。
*使用CursorLoader时的数据源,如ContentProvider。
启动加载器:
LoaderManager可在Activity或Fragment内管理一个或多个Loader实例,每个Activity或片段中只有一个LoaderManager。为了初始化加载器以及实现一个Loader类(如CursorLoader),始终需要引入LoaderManager。
通常,在Activity的onCreate()方法或片段的onActivityCreated()方法内初始化Loader。
getLoaderManager().initLoader(0,null,this);
initLoader()方法采用以下参数:
*用于标识加载项的唯一ID,此例中ID为0
*在构建时提供给加载器的可选参数,此例中为null
*LoaderManager.LoaderCallbacks实现,LoaderManager将调用此实现来报告加载器事件,此例中,本地实现LoaderManager.LoaderCallbacks接口,故它会传递对自身的引用this。
initLoader()调用确保加载器已初始化且处于活动状态,将可嫩有两种结果:
*若ID指定的加载器已存在,则将重复使用上次创建的加载器。
*若ID指定的加载器不存在,则initLoader()将触发LoaderManager.LoaderCallbacks方法onCreateLoader().
重启加载器:
当使用initLoader()时,将使用含有指定ID的现有加载器,若没有,则会创建一个,但有时,想舍弃这些旧数据并重新开始的话,调用restartLoader()。例如,当用户查询更改时,此SearchView.OnQueryTextListener实现将重启加载器,以便它能够使用修订后的搜索过滤器执行新查询:
public boolean onQueryTextChanged(String newText) {mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;getLoaderManager().restartLoader(0, null, this);return true;
}
使用LoaderManager回调:
LoaderManager.LoaderCallback是一个支持客户端与LoaderManager交互的回调接口。
加载器(特别是CursorLoader)在停止运行后,仍需保持其数据,这样,应用即可保留Activity或片段的onStop()和onStart()方法中的数据。当用户返回应用时,无需等待重新加载这些数据,可以使用LoaderManager.LoaderCallback方法了解何时创建新加载器,并告知应用何时停止使用加载器的数据。LoaderManager.LoaderCallbacks包括以下方法:
onCreateLoader()---针对指定的ID进行实例化并返回新的Loader
onLoadFinished()---将在先前创建的加载器完成加载时调用
onLoaderReset()---将在先前创建的加载器重置且数据因此不可用时调用
Activity中加载器的总结相关推荐
- webpack 中的加载器简介||webpack 中加载器的基本使用——1. 打包处理 css 文件 2. 打包处理 less 文件 3.打包处理 scss 文件
webpack 中的加载器 1. 通过 loader 打包非 js 模块 在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块,其他非 .js 后缀名结尾的模块, webpa ...
- jQuery Mobile 手动显示ajax加载器,提示加载中...
在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大 ...
- 如何在React Native中创建精美的动画加载器
by Vikrant Negi 通过Vikrant Negi 如何在React Native中创建精美的动画加载器 (How to create a beautifully animated load ...
- Android 中LayoutInflater(布局加载器)之介绍篇
本文出自博客Vander丶CSDN博客,如需转载请标明出处,尊重原创谢谢 博客地址:http://blog.csdn.net/l540675759/article/details/78099358 前 ...
- webpack中loader加载器(打包非js模块)
通过loader打包非js模块 我这儿用VScode为编辑器 在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块,其他非. js后缀名结 尾的模块,webpack 默认处理不了, ...
- 034_webpack中的加载器
1. 通过loader打包非js模块 1.1. 在实际开发中, webpack默认只能打包处理以.js后缀名结尾的模块, 其它非.js后缀名结尾的模块, webpack默认处理不了, 需要调用load ...
- Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue
Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...
- [vue-cli] vue-cli中你经常的加载器有哪些?
[vue-cli] vue-cli中你经常的加载器有哪些? style,css,vue,postcss,url等 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大 ...
- 【vue开发问题-解决方法】(八)利用axios拦截器实现elementUI中加载动画,控制加载区域
[vue开发问题-解决方法](八)利用axios拦截器实现elementUI中加载动画,控制加载区域 参考文章: (1)[vue开发问题-解决方法](八)利用axios拦截器实现elementUI中加 ...
最新文章
- bzoj 1086: [SCOI2005]王室联邦
- 用.net4中的DynamicObject实现简单AOP
- 单点登录系统和CAS的简介
- Cookie 和 Session的区别 1
- 系统架构师学习笔记-论文摘要部分的写法
- iOS音频的后台播放总结
- [vscode] 显示空格
- node.js——uploads上传文件(multer)
- 功率是电压电流乘积的波形在一个周期内积分后除以周期。
- 高数——不定积分与定积分
- java商品销售管理系统_基于SSM框架下的JAVA商场销售管理系统
- c语言中专业英文词汇的意思,C语言常见英文词汇表
- 医学图像算法工程师面经
- canvas 文字颜色_Canvas 超全教程
- “%,/,//”的用法
- Scale 编程基础 A(变量声明、基本数据类型、运算符、文件读写、分支与循环、数据结构)
- 【Java学习笔记】 网络编程04 优化字符串拼接:JSON
- 最新Nikon镜头序列号查询,镜头产量估算2010.1.26更新
- 钳位二极管(保护用的)
- 机器学习之分类、回归、标注问题
热门文章
- linux双系统 删一个,双系统删除linux
- ubuntu python3.5安装_ubuntu16.04升级Python3.5到Python3.7的方法步骤
- “云时代架构”经典文章阅读感想十二
- bootstrap 源码中部分不了解的css属性
- 利用fstream进行文件拷贝测试
- Python学习(四)列表与列表操作
- hdu 4468 spy 极其精彩的一道kmp灵活运用题
- javascript焦点图(根据图片下方的小框自动播放)
- JAVA中File类的使用
- phpstorm version 2016.2 License Server激活