内容解析器说明
Content-Resolver Explanation
任何人都知道为什么 Android 开发团队将 Content-Resolver 实现为从 Content-Provider 获取数据的中间人。为什么不直接从 Content-Provider 询问数据?
就是说Content-Resolver有一个特殊的工作,是什么?
Why not asking data directly from the Content-Provider ?
A content:
Uri
可能引用另一个应用程序中的 ContentProvider
。您不能直接使用 ContentProvider
;进程间通信(IPC)是必需的。因此,API 是围绕该 IPC 模型设计的。
ContentResolver
s 旨在为应用程序创建一个接口,以安全地访问 and/or 修改其他应用程序中的数据,这些应用程序 运行 在单独的进程中。它为要在特定 ContentProvider
和 运行 在另一个进程中的内容消费者之间传递的内容消费者注册、请求、更新、绑定等创建了一个通用契约。
在 Android 中创建用于跨进程传输数据的适当且持久的接口很复杂。如果您必须创建自己的 IPC
客户端,那么这将非常耗时,并且您可能会忽略实现的重要方面。 "direct" 到 ContentProvider
的连接是 ContentResolver
提供的,但是已经解决了很多复杂性。已经在双方创建并定义明确的内容很方便。
这有点像邮政投递系统。如果你使用邮政服务,你在一封邮件上写上一个地址,邮政服务 (ContentResolver
) 找到合适的地方投递邮件 (ContentProvider
),然后 returns为回复您的消息而向您发送的任何消息。您的邮政服务还将处理新地址注册,告诉您地址是否无效,包裹是否太大,目标地址的收件人是否现在不接受邮件,等待邮件队列已满,处理以下情况携带信息的车辆发生故障等。在 ContentResolver
的情况下,还有一些其他事情。
您可以自己处理所有这些,但是当您考虑现实生活中的消息传递时,使用别人构建的东西并不简单也容易得多。对于 Android 中的进程间通信 (IPC
) 也是如此。这不是一个完美的类比,但希望这有助于阐明 ContentResolver
.
的必要性
任何人都知道为什么 Android 开发团队将 Content-Resolver 实现为从 Content-Provider 获取数据的中间人。为什么不直接从 Content-Provider 询问数据? 就是说Content-Resolver有一个特殊的工作,是什么?
Why not asking data directly from the Content-Provider ?
A content:
Uri
可能引用另一个应用程序中的 ContentProvider
。您不能直接使用 ContentProvider
;进程间通信(IPC)是必需的。因此,API 是围绕该 IPC 模型设计的。
ContentResolver
s 旨在为应用程序创建一个接口,以安全地访问 and/or 修改其他应用程序中的数据,这些应用程序 运行 在单独的进程中。它为要在特定 ContentProvider
和 运行 在另一个进程中的内容消费者之间传递的内容消费者注册、请求、更新、绑定等创建了一个通用契约。
在 Android 中创建用于跨进程传输数据的适当且持久的接口很复杂。如果您必须创建自己的 IPC
客户端,那么这将非常耗时,并且您可能会忽略实现的重要方面。 "direct" 到 ContentProvider
的连接是 ContentResolver
提供的,但是已经解决了很多复杂性。已经在双方创建并定义明确的内容很方便。
这有点像邮政投递系统。如果你使用邮政服务,你在一封邮件上写上一个地址,邮政服务 (ContentResolver
) 找到合适的地方投递邮件 (ContentProvider
),然后 returns为回复您的消息而向您发送的任何消息。您的邮政服务还将处理新地址注册,告诉您地址是否无效,包裹是否太大,目标地址的收件人是否现在不接受邮件,等待邮件队列已满,处理以下情况携带信息的车辆发生故障等。在 ContentResolver
的情况下,还有一些其他事情。
您可以自己处理所有这些,但是当您考虑现实生活中的消息传递时,使用别人构建的东西并不简单也容易得多。对于 Android 中的进程间通信 (IPC
) 也是如此。这不是一个完美的类比,但希望这有助于阐明 ContentResolver
.