第三部分:Android 应用程序接口指南---第一节:应用程序组件---第一章1-2.Loaders(装载机)_异步加载

分享到:

第1-2章 Loaders(装载机)

在Android 3.0中引入装载机,使得很容易异步加载Activity或Fragment中的数据。装载机有以下特点:

1. 他们使每个Activity 和Fragment可用。

2. 他们提供异步加载的数据。

3. 当内容发生改变时他们监测数据的来源并传递新的结果。

4. 当配置更改后被重新创建时,他们会自动重新连接到最近一次装载机的Cursor。因此,他们不需要重新查询自己的数据。

1-2.1 装载机的API概述

他们有可在一个应用程序中参与使用装载机的多个类和接口,如表格3-1所示:

Class/Interface

描述

LoaderManager

一个与Activity或Fragment相关的抽象类,用于管理一个或多个Loader实例。这有助于应用程序在Activity或Fragment生命周期上管理长时间运行的操作;经常使用的是CursorLoader类,但是应用程序可以根据需要载入的其它类型数据来自由的写入他们自己的装载机。

每个Activity或Fragment只有一个LoaderManager。但一个LoaderManager却可以有多个装载机。

 

LoaderManager.LoaderCsllbacks

一个客户端与LoaderManager交互的回调接口。例如,你可以使用onCreateLoader()回调方法,来创建一个新的装载机。

Loader

一个执行加载异步数据的抽象类。这是一个装载机的基类。你通常会使用CursorLoader,但你也能在自己的子类实现它。然而当内容发生改变时,装载器会积极的监测数据的来源并传递新的结果。

AsyncTaskLoader

一个抽象的载入器,用于提供一个AsyncTask来做这项工作。

CursorLoader

一个AsyncTaskLoader的子类,用于查询ContentResolver并返回一个Cursor。这个类实现了以一种标准方式查询Cursor的装载机协议,它建立在AsyncTaskLoader上,用来在后台线程上执行Cursor查询,这样它不会阻塞应用程序的UI。使用这种装载机的最佳方式是从一个ContentProvider中异步加载数据而不是通过Fragment或Activity的API来执行一种托管查询数据。

表格3-1 装载机的API概述

上述表中的类和接口是在你的应用程序里用来实现装载机必不可少的组成部分。你所创建的每个装载机并不需要全部都用到他们,但你为了初始化装载机和一个如CursorLoader的Loader类的实现将需要一个引用的LoaderManager。以下部分展示你在一个应用程序中是如何使用这些类和接口的。

1-2.2 在应用程序中使用装载机

本节介绍在一个Android应用程序中如何使用装载机。通常使用装载机的应用程序包含以下内容:

(1). 一个Activity或Fragment。

(2). LoaderMananger的一个实例。

(3). 一个CursorLoader加载的ContentProvider备份数据。另外,你可以实现自己的子类装载机或者用AsyncTaskLoader加载一些其它来源的数据。

(4). 一个LoaderManager.LoaderCallbacks的实现。可以创造新的装载机并且管理现有装载机的引用。

(5). 显示装载机数据的一种方法,如一个SimpleCursorAdapter。

(6). 一个数据源,如使用CursorLoader时的一个ContentProvider。

1. 启动一个装载机

LoaderManager管理Activity或Fragment内的一个或多个Loader实例,每个Activity或Fragment只有一个LoaderManager。

你通常会在Activity的onCreate()方法或Fragment的onActivityCreated()方法上初始化一个装载机。

如代码清单3-1所示:

// 准备装载机,要么重新链接已经存在的一个装载机要么开始一个新的

getLoaderManager().initLoader(0, null, this);
昵    称:
验证码: