2014-01-06 61 views
1

我明白,一个内容解析器接受来自客户端的请求,并通过他们具有鲜明的权威引导至内容提供商解决这些请求。理解内容提供商和分解

我正在通过vogellas tutorial,特别是queryCalendar方法,我注意到没有内容提供者的调用。我只看到代码内容解析器
ContentResolver cr = getContentResolver();

为什么有对于内容提供商没有电话?

+0

[内容提供者和内容解析器(http://www.androiddesignpatterns.com/2012/06/content-resolvers-and-content-providers.html) –

回答

0

因为内容提供者是由Android系统本身实现的。如果你的代码看,你会看到这一点:

Uri uri = Calendars.CONTENT_URI; 

在Android系统中,有某处内容提供商被注册来处理该URI内容提供商的请求。

简而言之:如果您想将某些数据公开给其他应用程序(当然,没有人阻止您在您的应用程序中使用它),您将只面对内容提供商。然后,你需要实现你自己的一个(并通过Uri公开它)。 Content Resolver是使用Uri与Content Provider交谈的内容。

你也可以看this Vogella tutorial看看如何定义你自己的内容提供者。

0

您看到对ContentResolver的调用,因为ContentResolver负责调用ContentProvider的方法并返回数据。

写在official Android Guide on ContentProviders

“当你想在内容提供商来访问数据,可以使用ContentResolver的对象在应用程序的语境与供应商作为客户端进行通信。该ContentResolver的对象进行通信提供者对象,实现ContentProvider的类的实例。提供者对象接收来自客户端的数据请求,执行请求的操作并返回结果。“

如果你想好好学学内容提供商,

以下教程是最好的在线教程为了解如何正确地实现内容提供商(加盖Android API Guide一起)。

  1. Content Provider Basics

  2. How to Use Existing Content Providers in your app

  3. How to write your own custom Content Providers

这些教程帮助我得到内容提供商的深入了解,我不怕他们了! :)希望他们也帮助你!

P.S.在完成内容提供者之后,您可能希望使用加载器将内容提供者中的数据加载到您的UI中。 official Android tutorial on Loaders是非常好的。