LoaderManager管理Loader实现异步动态加载数据,并使用RecyclerView 显示

本文介绍了LoaderManager的特性,包括异步加载数据、监视数据变化并自动更新。详细讲解了如何获取LoaderManager对象、初始化Loader、实现LoaderCallbacks接口以处理数据加载的各个阶段。此外,还探讨了Loader的向下兼容性,并给出了一个结合RecyclerView实现数据动态更新的应用示例。
摘要由CSDN通过智能技术生成

关键知识点
1 RecyclerView的显示
2 Loader异步加载数据

一、Loader异步加载数据

1.Loader特性:

  1. 对于每个Activity或者Fragment都可用
  2. 提供异步加载数据
  3. 监视数据资源,当内容改变时重新更新
  4. 当配置改变时,自动重新连接最新的cursor,故不需要重新查询数据

2.Loader相关类接口

  1. LoaderManager
    对于每个activity或者fragment只存在一个与之相关的LoaderManager对象,该LoaderManager对象可以存在多个可供管理loader对象。
  2. LoaderManager.LoaderCallbacks
    LoaderManager.LoaderCallbacks是个回掉接口,用于客户端与LoaderManager的交互,loader对象就是在其接口的onCreateLoader()方法中得到,在使用时需要覆盖其方法。
  3. CursorLoader
    CursorLoader是AsyncTaskLoader的子类,通过它可以查询ContentResolver并返回一个Cursor对象,并使用该cursor对象在后台线程执行查询操作,以不至于会阻塞主线程,从一个内容提供者去异步加载数据是CursorLoader对象最大用处。

3.简单使用Loaders

(1).得到LoaderManager对象
//得到LoaderManager对象  
LoaderManager manager = content.getLoaderManager();  
(2).初始化loader

在activity的onCreate()方法区或者在fragment的onActivityCreated()方法区中,需要初始化一个Loader对象(可能已经存在或者新创建),

getLoaderManager().initLoader(0, null, this);调用initLoader()方法是确保loader对象已经初始化且可用,然而存在下面2种情况

1).ID存在

如果指定ID的loader已经存在,将重新使用最新的loader对象

2).ID不存在

如果指定的ID不存在,通过initLoader()方法,将会触发LoaderManager.LoaderCallbacks的onCreateLoader()方法并返回一个新的loader
虽然通过initLoader()可以得到loader对象,但是我们不需要捕获该对象,但LoaderManager对象可以自动管理loader生命周期,因此不需要直接与loader对象直接交互

(3).实现LoaderCallbacks

以典型的CursorLoader为例,app允许数据在onStart() 和 onStop()函数中传递,一旦的当用户重新进入app,不必等待数据重新加载,LoaderManager.LoaderCallbacks包含下面3个重要函数

1).onCreateLoader()
Instantiate and return a new Loader for the given ID.
        当loadermanager调用initLoader()时, 首先检查指定的id是否存在,如果不存在才会触发该方法,通过该方法才能创建一个loader。返回创建的CursorLoader对象,其中可以在创建对象时,指定查询的条件,并携带一个Cursor对象。
CursorLoader接收 uri projection  selection  selectionArgs  sortOrder 等参数信息
// 返回一个new CursorLoader对象  
public Loader<Cursor> onCreateLoader(int id, Bundle args) {  
    Uri uri = Uri.parse("content://com.baidu.provider/music");  
    return new CursorLoader(MainActivity.this, uri, null, null, null,  
            null);  
}  
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值