2014-01-06 62 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是非常好的。