【问题标题】:Content-Resolver Explanation内容解析器说明
【发布时间】:2015-11-08 18:04:06
【问题描述】:

任何人都知道为什么 Android 开发团队将 Content-Resolver 实现为中间人以从 Content-Provider 获取数据。为什么不直接从 Content-Provider 询问数据? 意思是Content-Resolver有一个特殊的工作,它是什么?

【问题讨论】:

  • 当我们试图与非常有用和安全的伙伴联系时,中间人是最佳选择。

标签: android android-contentprovider android-contentresolver


【解决方案1】:

为什么不直接从 Content-Provider 询问数据?

content: Uri 可能在另一个应用程序中引用 ContentProvider。你不能直接使用ContentProvider;需要进程间通信(IPC)。因此,API 是围绕该 IPC 模型设计的。

【讨论】:

    【解决方案2】:

    ContentResolvers 旨在为应用程序创建一个接口,以安全地访问和/或修改在不同进程中运行的其他应用程序中的数据。它为内容消费者注册、请求、更新、绑定等创建了一个通用合约,以便在特定的ContentProvider 和在另一个进程中运行的内容消费者之间传递。

    在 Android 中为跨进程传输数据创建适当且持久的接口非常复杂。如果您必须创建自己的IPC 客户端,那么这将非常耗时,并且您可能会忽略实现的重要方面。与ContentProvider 的“直接”连接是ContentResolver 提供的,但已经解决了很多复杂性。在双方都创建并明确定义是很方便的。

    这有点像邮政系统。如果您使用邮政服务,您在一封邮件上写上一个地址,邮政服务 (ContentResolver) 会找到合适的地方来递送邮件 (ContentProvider),然后将任何邮件返回给您以响应您的邮件。信息。您的邮政服务还将处理新地址注册,告诉您地址是否无效,包裹是否太大,目的地地址的收件人是否现在不接受邮件,等待消息队列已满,处理以下情况携带信息的车辆发生故障等。在ContentResolvers 的情况下,还有其他一些事情。

    您可以自己处理所有这些事情,但是当您考虑现实生活中的消息传递时,使用其他人构建的东西并不简单而且容易得多。 Android 中的进程间通信 (IPC) 也是如此。这不是一个完美的类比,但希望有助于阐明ContentResolver 的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多