继续总结加载器

加载器可以支持在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中加载器的总结相关推荐

  1. webpack 中的加载器简介||webpack 中加载器的基本使用——1. 打包处理 css 文件 2. 打包处理 less 文件 3.打包处理 scss 文件

    webpack 中的加载器 1. 通过 loader 打包非 js 模块 在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块,其他非 .js 后缀名结尾的模块, webpa ...

  2. jQuery Mobile 手动显示ajax加载器,提示加载中...

    在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大 ...

  3. 如何在React Native中创建精美的动画加载器

    by Vikrant Negi 通过Vikrant Negi 如何在React Native中创建精美的动画加载器 (How to create a beautifully animated load ...

  4. Android 中LayoutInflater(布局加载器)之介绍篇

    本文出自博客Vander丶CSDN博客,如需转载请标明出处,尊重原创谢谢 博客地址:http://blog.csdn.net/l540675759/article/details/78099358 前 ...

  5. webpack中loader加载器(打包非js模块)

    通过loader打包非js模块 我这儿用VScode为编辑器 在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块,其他非. js后缀名结 尾的模块,webpack 默认处理不了, ...

  6. 034_webpack中的加载器

    1. 通过loader打包非js模块 1.1. 在实际开发中, webpack默认只能打包处理以.js后缀名结尾的模块, 其它非.js后缀名结尾的模块, webpack默认处理不了, 需要调用load ...

  7. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

  8. [vue-cli] vue-cli中你经常的加载器有哪些?

    [vue-cli] vue-cli中你经常的加载器有哪些? style,css,vue,postcss,url等 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大 ...

  9. 【vue开发问题-解决方法】(八)利用axios拦截器实现elementUI中加载动画,控制加载区域

    [vue开发问题-解决方法](八)利用axios拦截器实现elementUI中加载动画,控制加载区域 参考文章: (1)[vue开发问题-解决方法](八)利用axios拦截器实现elementUI中加 ...

最新文章

  1. bzoj 1086: [SCOI2005]王室联邦
  2. 用.net4中的DynamicObject实现简单AOP
  3. 单点登录系统和CAS的简介
  4. Cookie 和 Session的区别 1
  5. 系统架构师学习笔记-论文摘要部分的写法
  6. iOS音频的后台播放总结
  7. [vscode] 显示空格
  8. node.js——uploads上传文件(multer)
  9. 功率是电压电流乘积的波形在一个周期内积分后除以周期。
  10. 高数——不定积分与定积分
  11. java商品销售管理系统_基于SSM框架下的JAVA商场销售管理系统
  12. c语言中专业英文词汇的意思,C语言常见英文词汇表
  13. 医学图像算法工程师面经
  14. canvas 文字颜色_Canvas 超全教程
  15. “%,/,//”的用法
  16. Scale 编程基础 A(变量声明、基本数据类型、运算符、文件读写、分支与循环、数据结构)
  17. 【Java学习笔记】 网络编程04 优化字符串拼接:JSON
  18. 最新Nikon镜头序列号查询,镜头产量估算2010.1.26更新
  19. 钳位二极管(保护用的)
  20. 机器学习之分类、回归、标注问题

热门文章

  1. linux双系统 删一个,双系统删除linux
  2. ubuntu python3.5安装_ubuntu16.04升级Python3.5到Python3.7的方法步骤
  3. “云时代架构”经典文章阅读感想十二
  4. bootstrap 源码中部分不了解的css属性
  5. 利用fstream进行文件拷贝测试
  6. Python学习(四)列表与列表操作
  7. hdu 4468 spy 极其精彩的一道kmp灵活运用题
  8. javascript焦点图(根据图片下方的小框自动播放)
  9. JAVA中File类的使用
  10. phpstorm version 2016.2 License Server激活