Activity中加载器的总结

继续总结加载器

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native 是一种流行的跨平台开发框架,它允许我们使用JavaScript编写移动应用程序。 在React Native,我们可以通过创建自定义的 Activity加载RN(React Native)应用程序。 Activity 是Android开发的一个重要概念,它代表一个用户界面的窗口。 在React Native,我们可以使用现有的 BaseActivity 类来加载RN应用程序。 首先,我们需要在 Java 代码创建一个继承 BaseActivity 的自定义 Activity 类。 在这个类,我们需要执行几个步骤来加载RN应用程序。 首先,我们需要创建一个 ReactInstanceManager 对象并对其进行一些配置,例如设置JS主机、设置调试模式等。 然后,我们需要使用这个 ReactInstanceManager 对象创建一个 ReactRootView 对象。 接下来,我们可以调用 ReactRootView 的 startReactApplication() 方法来加载我们的RN应用程序。 这个方法需要两个参数:一个是我们的 RN 应用程序的模块名,另一个是传递给 RN 应用程序的一些初始属性。 最后,我们需要使用 setContentView() 方法将 ReactRootView 对象设置为 Activity 的内容视图,以便它可以显示在屏幕上。 需要注意的是,加载 RN 应用程序可能需要一些时间,因此我们可能需要显示一个加载指示或者启动一个异步任务来加载 RN 应用程序。 这样,当 RN 应用程序加载完成后,我们就可以将其显示在 Activity 了。 总结一下,通过创建一个继承 BaseActivity 的自定义 Activity 类,并在其执行必要的步骤来配置和加载 RN 应用程序,我们可以将 RN 应用程序加载到 Android Activity 。这样,我们就可以在 Android 平台上使用 React Native 来构建跨平台的移动应用程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值