我了解内容解析器接受来自客户的请求,并通过将这些请求指向具有不同权限的内容提供商来解决这些请求。
我正在浏览vogellas tutorial,特别是queryCalendar
方法,我注意到没有内容提供商的调用。我只看到内容解析器的代码:
ContentResolver cr = getContentResolver();
为什么没有要求内容提供商?
答案 0 :(得分:0)
因为Content Provider是由Android系统本身实现的。如果您查看代码,您会看到这一点:
Uri uri = Calendars.CONTENT_URI;
在Android系统中,有一个内容提供商在某处注册处理该Uri的内容提供商请求。
简而言之:如果您想将某些数据暴露给其他应用程序(当然,没有人阻止您在应用程序中使用它),您将只面对内容提供商。然后,您需要实现自己的一个(并通过Uri公开它)。内容解析器是使用Uri与内容提供者交谈的东西。
您还可以查看this Vogella tutorial,了解如何定义自己的内容提供商。
答案 1 :(得分:0)
您会看到对ContentResolver的调用,因为ContentResolver负责调用ContentProvider的方法并返回数据。
写在official Android Guide on ContentProviders,
"如果要访问内容提供程序中的数据,可以使用应用程序上下文中的ContentResolver对象作为客户端与提供程序进行通信。 ContentResolver对象与提供程序对象进行通信,提供程序对象是实现ContentProvider的类的实例。提供者对象从客户端接收数据请求,执行请求的操作,并返回结果。"
如果您想正确学习内容提供商,
以下教程是在线最佳教程(以及官方Android API Guide),用于了解如何正确实施内容提供商。
这些教程帮助我对内容提供商有了深刻的理解,我不再害怕了! :)希望他们也帮助你!
P.S。完成内容提供程序后,您可能希望使用Loaders将内容提供程序中的数据加载到UI中。 official Android tutorial on Loaders非常适合。