Android中-Loader加载器

本文详细介绍了Android中的Loader加载器,包括其核心组件LoaderManager、LoaderCallback、AsyncTaskLoader及CursorLoader等,并提供了实例说明如何实现联系人模糊查询的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Loader加载器:

Android3.0(API11推出的),用来进行异步数据的加载,内部使用AsyncTask实现,通常用在数据库的加载,随后V4中推出了兼容的版本
核心

  • LoaderManger
  • LoaderManger.LoaderCallBacks
  • Loader

Loader

  • 加载器的基类
  • AsyncTaskLoader是Loader的一个子类,内部使用AsyncTask处理耗时操作
  • CursorLoader是AsyncTaskLoader的一个子类,主要用来加载ContentProvider中的数据

LoaderManger

  • 加载器的管理者
  • 主要负责Loader的回调管理,一个Activity或者Fragment中只有一个LoaderManger,一个LoaderManger可以管理多个Loader
  • LoaderManger在初始化的时候,通过id去确定Loader,如果Loader不存在,那么将创建一个新的Loader,如果已经存在,将重新连接已经存在的Loader

LoaderManger.LoaderCallBacks

  • 加载器加载状态的回调函数
  • onCreatLoader当Loader不存在时,我们调用初始化Loader时,需要返回一个Loader对象
  • onLoadFinished 当Loader执行完异步任务,获取到数据之后的一个回调,将数据返回来
  • onLoaderReset 当Loader被重置时的调用,我们需要在这个回调中做资源的释放

AsyncTaskLoader

  • 需要重写loadInBackground,这个方法在后台线程执行,处理耗时操作
  • 我们需要在onStartLoading方法中主动调用forceLoade()方法强制进行数据的加载

下面通过一个栗子来解释

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
Finish的时候处理数据对象Cursor

这里可以实现一个联系人的模糊查询
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

在onLoadFinish的时候将Cursor对象的数据设置到Adapter上
adapter.swapCursor(data);

在onLoaderReset的时候,将数据置空
adapter.swapCursor(null);


自定义的CustomLoader extends AsyncTaskLoader

这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值