内容解析器说明

时间:2015-11-08 18:04:06

标签: android android-contentprovider android-contentresolver

任何人都知道为什么Android开发人员团队已将Content-Resolver作为中间人实现从内容提供商处获取数据。为什么不直接从Content-Provider询问数据? 这意味着Content-Resolver有一项特殊的工作,它是什么?

2 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:0)

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

创建适当且持久的界面以在Android中的流程之间传输数据非常复杂。如果您必须创建自己的IPC客户端,那么这将非常耗时,您可能会忽略实施的重要方面。 A"直接"与ContentProvider的连接是ContentResolver提供的,但已经解决了很多复杂问题。已经有了双方创造和明确定义的便利。

这有点像邮政投递系统。如果您使用邮政服务,则在邮件上放置一个地址,邮政服务(ContentResolver)找到传递邮件的适当位置(ContentProvider),然后向您返回任何邮件回应你的消息。您的邮政服务还将处理新的地址注册,告诉您地址是否无效,如果包太大,如果目的地地址的收件人现在不接受邮件,等待邮件队列已满,处理情况携带信息的车辆发生故障等。在ContentResolver s的情况下还有其他一些事情。

您可以自己处理所有这些,但是当您考虑现实生活中的消息传递时,使用其他人构建的内容并不简单且容易。同样适用于Android中的进程间通信(IPC)。这不是一个完美的比喻,但希望这有助于澄清对ContentResolver的需求。