来自Alex Lockwood的博客 - http://www.androiddesignpatterns.com/2012/06/content-resolvers-and-content-providers.html
的 什么是内容解析器? 强> 内容解析器是您的单个全局实例 提供对您(和其他应用程序)的访问的应用程序 内容提供商。内容解析器的行为与其名称完全相同 暗示:它接受来自客户端的请求,并解析这些请求 通过将它们指向具有不同权限的内容提供者。 为此,内容解析器存储权限到的映射 内容提供商。这种设计很重要,因为它允许简单和 访问其他应用程序的内容提供商的安全方法。 内容解析器包括CRUD(创建,读取,更新,删除) 对应抽象方法的方法(插入,删除,查询, 在Content Provider类中更新)。内容解析器没有 了解它正在进行交互的内容提供商的实施 与(也不需要知道);每个方法都传递一个URI 指定要与之交互的内容提供者。 的 什么是内容提供商? 强> 而内容解析器提供了一个抽象 应用程序的内容提供商,内容提供商提供 从底层数据源(即SQLite数据库)的抽象。 它们提供了定义数据安全性的机制(即通过强制执行) 读/写权限)并提供连接的标准接口 代码在另一个进程中运行的一个进程中的数据。 内容提供商提供用于发布和使用的界面 数据,基于简单的URI寻址模型使用内容:// 架构。它们使您可以从应用程序中提取应用程序层 底层数据层,使您的应用程序与数据源无关 通过抽象底层数据源。 的 查询的生命 强> 那么简单查询背后的逐步过程到底是什么?如 如上所述,当您通过数据库查询数据库中的数据时 内容提供商,您不直接与提供商沟通。 而是使用Content Resolver对象与 供应商。查询所在的特定事件序列 制作如下: 打电话给 getContentResolver().query(Uri, String, String, String, String) 是。该调用调用内容解析器的查询 方法,而不是 ContentProvider's 。 当。。。的时候 query 调用方法,内容解析器解析 uri 论证并提取其权威。 内容解析程序将请求定向到使用(唯一)权限注册的内容提供程序。这是通过调用 内容提供商 query 方法。 当。。。的时候 Content Provider's query 调用方法,执行查询并返回Cursor(或抛出异常)。该 结果行为完全取决于Content Provider 实现。
的 什么是内容解析器? 强>
内容解析器是您的单个全局实例 提供对您(和其他应用程序)的访问的应用程序 内容提供商。内容解析器的行为与其名称完全相同 暗示:它接受来自客户端的请求,并解析这些请求 通过将它们指向具有不同权限的内容提供者。 为此,内容解析器存储权限到的映射 内容提供商。这种设计很重要,因为它允许简单和 访问其他应用程序的内容提供商的安全方法。
内容解析器包括CRUD(创建,读取,更新,删除) 对应抽象方法的方法(插入,删除,查询, 在Content Provider类中更新)。内容解析器没有 了解它正在进行交互的内容提供商的实施 与(也不需要知道);每个方法都传递一个URI 指定要与之交互的内容提供者。
的 什么是内容提供商? 强>
而内容解析器提供了一个抽象 应用程序的内容提供商,内容提供商提供 从底层数据源(即SQLite数据库)的抽象。 它们提供了定义数据安全性的机制(即通过强制执行) 读/写权限)并提供连接的标准接口 代码在另一个进程中运行的一个进程中的数据。
内容提供商提供用于发布和使用的界面 数据,基于简单的URI寻址模型使用内容:// 架构。它们使您可以从应用程序中提取应用程序层 底层数据层,使您的应用程序与数据源无关 通过抽象底层数据源。
的 查询的生命 强>
那么简单查询背后的逐步过程到底是什么?如 如上所述,当您通过数据库查询数据库中的数据时 内容提供商,您不直接与提供商沟通。 而是使用Content Resolver对象与 供应商。查询所在的特定事件序列 制作如下:
打电话给 getContentResolver().query(Uri, String, String, String, String) 是。该调用调用内容解析器的查询 方法,而不是 ContentProvider's 。
getContentResolver().query(Uri, String, String, String, String)
ContentProvider's
当。。。的时候 query 调用方法,内容解析器解析 uri 论证并提取其权威。
query
uri
内容解析程序将请求定向到使用(唯一)权限注册的内容提供程序。这是通过调用 内容提供商 query 方法。
当。。。的时候 Content Provider's query 调用方法,执行查询并返回Cursor(或抛出异常)。该 结果行为完全取决于Content Provider 实现。
Content Provider's query