2013-01-16 5 views
7

Andriod etki alanında yeni ve öğrenme aşamasında. Sorguların bir çift var:ContentResolver usage

Her uygulama için tek bir ContentResolver nesnesine sahibiz mi? Tek bir nesne mi? Bu nesne yaşam döngüsünü kim yönetir? Tek kişilikse, bir ContentProvider'ı sorgulamak için birden fazla istek nasıl işler? Alex Lockwood'un Blogdan

cevap

14

- http://www.androiddesignpatterns.com/2012/06/content-resolvers-and-content-providers.html

İçerik Çözümleyici nedir?

İçerik Reselver sizin (ve diğer uygulamalar) içerik sağlayıcılara erişim sağlayan uygulamada tek global örneğidir. Content Resolver, adının tam olarak yerine getirdiği gibi davranır: istemcilerden gelen istekleri kabul eder ve bu istekleri, 'u, ayrı bir yetkiliyle içerik sağlayıcısına yönlendirerek giderir. Bunu yapmak için, İçerik Çözümleyicisi bir eşlemeyi yetkililerden İçerik Sağlayıcılarına kaydeder. Bu tasarım, diğer uygulamaların İçerik Sağlayıcılarına erişim için basit ve güvenli araçlara izin verdiği için önemlidir.

İçerik Reselver

İçerik Sağlayıcı sınıfında CRUD (silme, güncelleme oluşturmak okuyun) soyut yöntemlerle karşılık gelen yöntemleri (insert,, güncelleştirme sorgusu silme) içerir. İçerik Çözümleyicisi, numaralı ile etkileşime girdiği İçerik Sağlayıcıların uygulamasını bilmez (ayrıca bilmesi gerekmez); Her bir yöntem, 'un etkileşim için İçerik Sağlayıcıyı belirttiği bir URI'den geçirilir.

İçerik Sağlayıcısı nedir? İçerik Çözücü uygulamanın İçerik sağlayıcıları arasında bir Özet sağlar iken

, içerik sağlayıcılar, veri kaynağının bir soyutlama (yani, bir SQLite veritabanı) içerir. Veri güvenliğini tanımlamak için mekanizmalar sağlarlar (yani okuma/yazma izinlerini uygulayarak) ve verilerini başka bir işlemde kod çalıştıran bir işlemle birleştiren standart bir arabirim sunarlar.

İçerik Sağlayıcıları, içeriği: // şemasını kullanarak basit bir URI adresleme modeli temel alan verilerini yayınlamak ve kullanmak için bir arabirim sağlar. Uygulama katmanlarınızı, temel veri katmanlarını temel veri katmanlarından çözmenize olanak vererek, uygulama veri kaynağınızı temel veri kaynağını soyutlayarak gerçekleştirebilirsiniz.

bir Query

Yaşam Peki tam basit sorgusunun ardındaki adım adım süreci nedir? Yukarıda açıklandığı gibi olarak, veritabanınızdan içerik sağlayıcısı aracılığıyla veri sorguladığınızda, doğrudan sağlayıcıyla iletişim kurmazsınız. Bunun yerine, sağlayıcısıyla iletişim kurmak için Content Resolver nesnesini kullanın.getContentResolver().query(Uri, String, String, String, String) bir çağrı yapılır

  • : bir sorgu yapılan olduğunda meydana olayların belirli dizisi aşağıda verilmiştir. Çağrı, İçerik Çözümleyici'nin yöntemini değil, ContentProvider's yöntemini çağırır.

  • query yöntemi çağrıldığında, Content Resolver, uri bağımsız değişkenini ayrıştırır ve yetkilerini ayıklar. İçerik Çözümleyici, isteği (benzersiz) yetkiliye kayıtlı içerik sağlayıcısına yönlendirir. Bu,
    İçerik Sağlayıcının query yöntemini çağırarak yapılır.

  • Content Provider's query yöntemi çağrıldığında, sorgu gerçekleştirilir ve bir İmleç döndürülür (veya bir istisna atılır). Ortaya çıkan davranış,
    tamamen İçerik Sağlayıcının
    uygulamasına bağlıdır.

İlgili konular