SORU
22 ŞUBAT 2011, Salı


kullanma vs ContentResolver içerik sağlayıcı erişmek için ContentProviderClient

documentation on Android content providers kullanarak ContentResolver içeriğe erişim getContentResolver(), elde açıklar.

Ancak aynı zamanda bir getContentResolver().acquireContentProviderClient(authority) elde edilebilir ContentProviderClient. Daha fazla veya daha az aynı yöntemleri sağlayıcıdan içeriğe erişmek için ContentResolver mevcut sağlamak gibi görünüyor.

Sadece ContentResolver yerine ContentProviderClient doğrudan kullanmalıyım? Avantajları nelerdir?

CEVAP
8 Mart 2011, Salı


Android cihazınız her benzersiz İçerik bir Otorite tarafından tanımlanan birçok veritabanı var. Bu "etki alanı adı" ilk önce eğik çizgi:// urı içerik ... her parçası eşdeğer.

ContentResolver Veri ContentProvider String contentAuthority bir eşleme sağlayan depolar. Zaman sana haber ContentResolver.query() update() ya da ne var, URİ ayrıştırılır ayrı bileşenlerini, contentAuthority dize tespit ve contentResolver için arama harita için eşleşen bir dize, ve doğrudan sorgu hakkı sağlayıcısı. Bu pahalı arama URİ aramak için arama farklı, farklı bir contentAuthority ile de olabilir çünkü her arama sırasında oluşur. Ayrıca, bazı masrafları ve aşağı çağrıları yeniden olamaz, belirli bir sağlayıcı bir bağlantı kurma yırtılma dahil olabilir. Yükü var işin içinde emin değilim, bu çok derin bazı OS düzeyi kodu.

Bunun aksine, zaman sana haber acquireContentProviderClient(authority), "ne sağlayıcısı yapmak istiyorum?" arama yapılır sonra, size verilen bir ContentProviderClient aslında bir doğrudan bağlantı için ContentProvider. (Sen ve çapraz iplik iletişim ve eşzamanlılık kilitleme) içeren sağlayıcı arasında yapıştırıcı bir parça var. Kullandığınızda, ancak ContentProviderClient doğrudan isteme yetkisi için Sağlayıcı ile konuşun. Bu sürekli atık yeniden hesaplama "hangi sağlayıcı istiyor muyum?" kaldırır

NOT:Eğer bir ContentProviderClient alırsanız, . acquireContentProviderClient() documentation başına: ^em>"Arayanın gerektiğini belirten onlar bitti sağlayıcı tarafından arama ContentProviderClient.release() sağlayacak sistem yayın kuruluşu bunu belirleyen başka bir nedenle aktif tutmak."Yani aslında, Eski bir İstemci açık bırakarak Sağlayıcı arka planda bir hizmet olarak çalışmasını zorlar. , Temizlemek için unutmayın!

Özet:

ContentAuthorities değişen birçok çağırır:ContentResolver kullanın.

Aynı Makam için çağrılar:Elde etmek ve ContentProviderClient kullanın. Serbest hatırla() işin bittiğinde.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • Emotional Trancer

    Emotional Tr

    4 Mart 2010
  • stokelycalm

    stokelycalm

    28 Aralık 2010