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