Android 内容提供器---内容提供器基础(概述)
内容提供器管理着对数据的核心资源库的访问。并且提供器是Android应用程序的一部分,它经常为了跟数据协同工作而提供自己的UI。但是内容提供器的主要目的是提供其他应用程序使用,它们使用提供器的客户端对象访问提供器。提供器和提供器客户端一起给处理进程间通信的数据和安全数据访问提供了一个一致的、标准的接口。
这个主题主要介绍以下基础内容:
1. 内容提供器是如何工作的;
2. 使用API从内容提供器中获取数据;
3. 使用API来插入、更新、删除内容提供器中的数据;
4. 与提供器协同工作的其他API功能。
概述
内容提供器用类似关系数据库表的形式用一个或多个表给外部应用程序呈现数据。一行代表了提供器收集的某些数据类型的一个实例,并且每行中每一列代表了一个实例的单独的数据收集片段。
例如,用户字典是Android平台 中内置的提供器之一,它存储了用户想要保持的非标准单词的拼写。表1说明了在这个提供器的表中可能有的数据。
表1.用户字典表示例
word |
app id |
frequency |
locale |
_ID |
mapreduce |
user1 |
100 |
en_US |
1 |
precompiler |
user14 |
200 |
fr_FR |
2 |
applet |
user2 |
225 |
fr_CA |
3 |
const |
user1 |
255 |
pt_BR |
4 |
int |
user5 |
100 |
en_UK |
5 |
在表1中,每一行代表了一个在标准字典里不可能找到的单词的实例。每一列代表了那个单词的一些数据,如locale列,列头是保存在提供器中的列名。要引用一行的locale的值,就要指向这一行的locale列。对于这个提供器,_ID列是这个提供器自动维护的“主键”列。
注意:提供器不是必须得有一个主键,并且如果存在主键,也不必使用_ID作为列名。但是,如果你想要把来自提供器的数据绑定到一个ListView中,就得有有一个列名是_ID的列。这个需求会在“显示查询结果”一节中进行更详细的的解释。