LoaderManager介绍

前一篇简要的介绍了Loader,这一篇主要介绍下LoaderManager。
 

简介

简要的来说,每一个Activity或Fragment都会有一个依赖的LoaderManager来管理一个或多个Loader。每一个Activity和Fragment都会有一个LoaderManager来自动管理和控制Loaders的starting、stoping、retaining、restarting和destorying。这些事件方法也可由客户端主动的来触发,比如 initLoader() restartLoader() destroyLoader()方法。但通常Loaders的生命周期事件都是伴随着宿主Activity/Fragment的生命周期而被触发。

优势

LoaderManager并不知道Loader如何去加载数据,而且它也没有必要知道。LoaderManager只需要控制Loader什么时候去start/stop/reset,在手机配置项发生改变时retain状态以及提供一个简单的接口来把Loader加载的数据传递到客户端。LoaderManager对于已经不建议使用的startManagingCursor方法来说更智能和通用,对于Activity复杂的生命周期来说,用LoaderManager来管理数据比3.0之前版本的startManagingCursor方法的方式更优越

1、startManagingCursor管理的是Cursor,而LoaderManager管理的是Loader<D>对象,运用了泛型,不再局限于数据的组织形式,更为通用

2、startManagingCursor query Cursor on UI Thread,数据量过大时有可能会使应用ANR。而LoaderManager管理的Loader是异步加载数据,不会导致应用ANR。

3、 当手机配置项发生改变Activity重新创建时, startManagingCursor并不会retain Cursor的状态,Cursor关闭重新requery。而LoaderManager在这一方面做的更聪明,它会保存Loader的状态,而不用重新load数据。

4、LoaderManager能更好的监控数据源数据的改变,一旦监听到数据的改变,Loader会重新加载数据,并把最新的数据更新给客户端使用

LoaderManager.LoaderCallbacks<D> 接口

LoaderManager和Activity/Fragment交互使用的是事件驱动方式,也就是LoaderCallbacks<D>接口,主要提供了以下三个方法

1、onCreateLoader,Loader首次创建时会回调此方法

2、onLoadFinished,当Loader数据加载完成时会回调此方法,我们可以在此方法调用时获取到最新加载的数据,每当数据源数据改变时,Loader会重新加载数据,完成后也会回调此方法,我们有能力实时获取到最新的数据

3、onLoadReset,当Loader的数据准备要进行重置时会回调此方法,在此方法中我们可以对即将不再使用的旧数据进行回收处理工作

结论

总体来说LoaderManager比startManagingCursor更加的好用,异步加载数据,减少ANR。能够很好的处理手机配置项改变。并且数据的返回格式可以定制,而不仅是Cursor。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值