基于Android的日程小管家系统的设计与实现外文翻译资料

 2022-09-15 15:16:42

英语原文共 564 页,剩余内容已隐藏,支付完成后下载完整资料


内容提供器的使用详解

当andriod应用程序共享数据的时候,它依赖内容提供器的API接口来获取数据库中的数据。例如:Android连接内容提供器允许一个有无限数据的安卓应用在安卓平台上重复持续性连接。通过简单调用这个内容提供器,一个应用可以集成访问本地和谷歌云存储的用户。应用程序可以利用内容提供读取和写入数据无需提供自的的数据库执行代码。通过这种方式,内容提供器提供一个强大的特性,它允许开发者在复杂的数据管理情况下轻松的创建应用,在很多情况下应用程序最终自身只有一小部分的持久性代码。

内容提供器的API接口能通过统一资源符使客户端程序查询操作系统相关的数据,类似于一个浏览器请求网络数据信息的方法。对于一个给定的URI查询,客户端不知道哪一个应用程序将提供数据,它只是简单的呈现了URI和操作树给平台,适当的提供了应用程序的反馈。该平台还提供了一个许可,允许客户限制访问内容提供器的数据。内容提供器的API允许完整的创建、读取、更新、和删除共享访问内容。这意味着应用程序可以使用URI-oriented请求:

创建一个新记录

检索一个或者一组记录

更新记录

删除数据

这一章介绍了如何编写自己的内容提供器通过检查内部运行的一个示例的内容提供器,SimpleFinchVideoContentProvider包括芬奇资源树。所有的文件引用都包含在本章的源目录。因此,当androdiManifest.xml文件是一个引用文件。我们将使用代码来描述如何创建一个内容提供器来实现每个方法的请求,通过主要的内容提供器API接口,ContentProvider的类。我们将会解释如何把SQLite数据库载入内容提供器,我们也会描述怎么实现一个提供引用数据和数据库行之间的映射的内容提供器的基本功能。当你在AndroidManifest.xml声明你的提供者时,你会看到一个内容提供器如何包装数据的持久性功能,使你的应用程序共享数据进程,我们将会给你展示如何连接内容提供器数据到Android UI组件,到目前为止我们就完成了MVC的框架,我们将会建立一个数据查看系统来自动刷新显示响应数据的变化.

在本章中,我们假设本地内容提供器存储使用SQLite数据库,考虑到内容提供器查询、插入、更新和删除API的方法,我们其实可以考虑将它映射到任何东西上,尽管理论上API可以使用任何后端存储和检索数据,例如一个可以支持所需操作的平面文件。

在下一章我们遵循本文向你展示如何扩展和增强内容提供器的概念。在这个过程中,你将学会利用内容提供器API来为Android启用RESTfui网络服务集成,这个简单的结构可以防止许多常见的移动编程错误。尽管它只依赖于基本的Android组件,但是你会发现这种方法导致逻辑上变成了一个移动应用程序体系,给Android应用程序提供了许多的鲁棒性和改进的性能。

我们将执行一个能提供简化框架的影音应用,应用程序将按照建议的方法加载、解析和缓存来自RESTfull web服务的YouTube视频内容条目,http://gdata.youtube.com。我们只会使用gData作为rest式服务的一个例子,我们可以载入一个Android内容提供商器,用户界面的应用程序将使用内容提供者来动态显示从网络加载和解析的条目。你将能够应用这种方法在互联网上集成大量的web服务到你的android应用程序。

理解内容提供器

内容提供器压缩数据功能导致它是其他应用的一部分,如视图和控制器,不需要参与存储应用程序,换个方式说就是:内容提供器保存应用程序的数据是因为视图和控制器不需要处理它。网络层不能尝试执行其他层的精简代码。在网络层出现的BUG和不必要的复杂任务超出了他们的管理范围。因此,一个UI应该是由好多UI组件来监听和收集事件。一个好的应用程序控制器是需要包含移动应用程序的逻辑。和本章有关的,当代码的类型可以把持续性数据给到第三方平台——内容提供器时,是可以简化的。回顾在275页的探讨问题:Andriod应用的SQL和DatabaseCentric数据模型,内容提供器和适合实现非文档中心数据模型。

在内容提供器的协助下,应用程序不需要打开自己的SQLite表,因为一些细节将会在内容提供器接口表中通过内容发生器产生。在过去,想共享数据的话,手机应用应该可能将其存储在与另一个应用程序定义格式的本地文件系统中。相反,有了安卓,应用程序通常可以依靠内容提供器来存储数据。

在深度解析SimpleFinchVideoContentProvider 之前,我们会提供简单的Finch video 应用程序综述并且提供内容提供器的实现任务的背景资料。

实现一个内容提供器

利用这个设计的结构,你将需要编写你自己的内容提供器,并完成以下任务:

1.为客户端创建一个内容提供器的公共API:

a.定义CONTENT_URI为你的内容提供器

b.创建一个可以和客户端通信的列

c.声明一个客户端制定列的静态字符串对象

d.为所有新数据类型定义MIME类型

2.实现你的内容提供器。要求如下:

a.扩展主要的内容提供器API,ContentProvide类,创建一个定制 化的内容提供器的实现

b.建立一个provider URI

c.创建一个SQLite数据库和相关联的存储内容提供指针

d.利用指针来给客户端提供动态的数据支持

e.通过客户端返回的二进制数来定义进程

f.实现基本的查询、插入、更新、和删除数据的方法并返回给客户 端

3.在声明你的lt;providergt;时更新AndroidManifest.xml文件

当我们已经完成了一个基本的内容提供器的实现时,我们将描述使用内容开发器开发的任务,以开发我们所提到的更先进的网络体系结构

通过Finch浏览视频

Finch视频查看器可以允许用户去罗列出视频数据相关的数据。我们已经包含了两个版本的视频列表和两个版本的底层内容提供器。第一个版本,在这一章中提出的,是一个简单的用SimpleFinchVideoContentProvider设计,用来帮助你实现你的第一个内容提供器。第二个版本的应用,在下一章中提出,这第二版的应用程序有缓存结果和显示视频缩略图的功能。

我们将详细讨论第一个应用程序。这个简单的应用程序有一个事件:SimpleFinchVideoActivity,它允许用户创建和列出它自己的视频数据,如12-1所示:

用这个应用程序,只需要输入一个适当的”视频“数据,然后按插入按钮,文本字段的列表下方采用AndroidMVC自动刷新视图数据。

简单的视频数据

当存储数据到应用中去的时候,SimpleFinchVideoContent Provider类创建下面的SQL语句:

CREATE TABLE video (_id INTEGER PRIMARY KEY, title TEXT, decription TEXT, uri TEXT);

id表示的是系统的指针,它提供了在数据库中独特的属性。因此,你需要定义一个主键来保证这个值是唯一的。

标题和表述项是存储视频数据的标题和描述的,URI项包含的是视频能在应用中播放的地址。

简单版本的代码结构

本节简要的检查了与Finch video相关的应用程序:

AndroidManifest.xml

我们已经创建了一个视频内容提供器的表单,它将包含一个引用我们的活动SimpleFinchVideoActivity,同SimpleFinchVideoContentProvider内容提供器一样。

$(FinchVideo/src/com/oreilly/demo/pa/finchvideo/FinchVideo.java 这个类包括了全局属性(稍后讨论),和SimpleVideo类,它定义了内容提供器的名称,无论是FinchVideo类还是SimpleVideo类都没有包含任何可以执行的代码。

$(FinchVideo)/src/com/oreilly/demo/pa/finchvideo/provider/SimpleFinchVideoContentProvider.java

SimpleFinchVideoContentProvider这个类是一个简单的视频数据库的内容提供器,它处理URI请求,这个文件是上半章的主题。

$(FinchVideo)/src/com/oreilly/demo/pa/finchvideo/SimpleFinchVideoActivity.java

SimpleFinchVideoActivity是一个事件类,它允许用户查看视频列表。

定义一个公共Provider的API

虽然我们在第三章中看到客户端是如何使用内容提供器的,在这里我们提供更多的信息内容提供器来完全的调用公共Provider API,为了让客户端使用你的内容提供器,你需要创建一个包含了一组和户籍的用语访问指针对象的可以返回常量的公共API,该类还讲定义内容提供器的授权URI,提供给SimpleFinchVideo,首先我们解释一个类,然后我们将展示完整的列表。

定义CONTENT_URI

客户端应用程序要查询内容提供器的数据,它需要通过URI来标识相关的Android内容提供器的数据从而获取这个方法。这些增删改查的方法都是在内容提供器中映射的方法。可以在350页找到相关的类。收到一个接口调用请求,内容解析器将使用特定的字符串来匹配每一个内容提供器,为其找到URI。因此,通过定义content_url类型,你的内容提供器才可以使用。

一个content_uri包括以下几个部分:

Content://

是一个前缀,告诉Android框架,它必须找到一个内容提供器的URI解析。

The authority

这个字符串唯一标识两个部分:组织部分和内容提供部分。程序的标识和创建内容提供器。对于内置到Android的内容提供器,组织部分被省略。例如:内置的媒体认证返回一个或者多个不具有认证的组织部分。然而,在这个框架之外创建的所有内容提供器必须要定义这两个部分。因此简单的Finch Video示例程序的认证是com.oreilly.demo.pa.finchvideo.SimpleFinchVideo。该组织部分com.oreilly.demo.pa.finchvideo和提供器的标识部分SimpleFinchVideo。谷歌文档的创建的建议是采用CONTENT_URI的认证。最好的解决方法就是使用完全限定的内容提供器的类来定义。认证部分唯一的标识特定的内容提供器。Android将调用响应查询来处理。

The path

内容提供器可以返回多个数据类型,必须构造URI路径的只部分需要指定返回的数据类型。

例如:内置的联系人内容提供器提供了许多不同的数据类型:pople,phones,content methods等等,联系人内容提供器使用URI的字符串来区分用户的请求数据类型。因此一个特定的人,URI会是这个样子的:

content://contacts/people/1

请求一个特定的电话号码,URI可能是这样的:

content://contacts/people/1/phone/3

在第一种情况下,MIME的返回类型将是vnd.android.cursor.item/person在第二种情况下它的返回类型应该是vnd.android.cur sor.item/phone

内容提供器必须能够返回任何一项或者是一组数据。当项目的标识符出现在URI的最后部分。内容提供器将返回这个项目。会看我们前面的例子,URI的content://contacts/people/1/phone/3返回的是一个电话号码,如果URI被替换成content://contacts/people/1/phone则返回的是一组电话号码。

如上所述:内容提供器可以解析路径并满足需求。这意味着可以使用部分路径来过滤一部分的数据并返回。例如Video内容提供器可以返回内部或者外部的数据,这取决于路由的不同。

简单Finch Video CONTENT_URI:

content://com.oreilly.demo.pa.finchvideo.SimpleFinchVideo/video

CONTENT_URI必须是公共静态的Uri,Finch Video类中定义的简单视频应用程序,在我们的公共API类我们开始通过扩展BaseColumns然后定义一个字符串命名权限:

public final class FinchVideo.SimpleVideos extends BaseColumns {

public static final String SIMPLE_AUTHORITY = 'com.oreilly.demo.pa.finchvideo.FinchVideo;

然后我们定义CONTENT_URI:

public static final class FinchVideo.SimpleVideos implements BaseColumns {

public static final

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[148743],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。