Activity中加载器的总结

本文介绍Android中加载器的使用方法,包括如何通过Activity或Fragment异步加载数据、监控数据源变化及自动重建加载器等内容。文章还介绍了启动加载器、重启加载器的过程,并详细解释了LoaderManager.LoaderCallbacks接口的作用。

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

继续总结加载器

加载器可以支持在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()---将在先前创建的加载器重置且数据因此不可用时调用 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值