Android使用一种称为ContentPrivider的概念来 将数据抽象为服务。这种内容提供程序的理念使数据看起来像启用了REST的数据提供程序。比如,网站。从这种意义上说ContentProvider是一个数据包装器。Android设备上的SQLite数据就是可封装到ContentPrider中的数据源的一个例子。
说明 REST表示REpresentational State Transfer(具象状态传输),是每个网民都非常熟悉的一个非常简单的概念,这个名称表述非常含糊。当在浏览器中键入URL,Web服务器返回HTML作为响应时,你实际上是在Web服务器上执行了一个基于REST的“查询操作”。类似的当使用Web表单更新内容时,就会在Web服务器(或站点)上执行了一个基于REST的“更新”操作,然后更改Web服务器的状态。
要从ContentProvider检索数据或将数据保存到ContentProvider,需要使用一组类似REST的URI。例如,如果要从封装图书数据库的ContentProvider获取一组图书,需要使用类似以下形式的URI:
content://com.android.book.BookProvider/books
要从图书数据库中获得特定的数据(如23号图书),需要类似以下形式的URI:
content://com.android.book.BookProvider/books/23
但是,严格来讲,比起数据访问机制ContentProvider的作用更像是一种封装机制。需要实际的数据访问机制(比如SQLite)或网络访问来获取基础数据源。所以,只希望与外部或在应用程序之间共享数据时,才使用ContentProvider抽象。对于内部数据访问,应用程序可以使用它认为适合的任何数据存储/访问机制,像下面的这些内容:
* 首选项:一组键/值对,可以用来存储应用程序的首选项。* 文件:应用程序内部的文件。可以存储在可移动的存储媒体上。
* SQLite:SQLite数据库,每个SQL数据库对于创建它的包是私有的。
* 网络:一种机制,支持通过互联网获得或存储外部数据。