Quelle est l’utilisation des fournisseurs de contenu privés?

Le guide de développement Android dit

Les fournisseurs de contenu sont également utiles pour lire et écrire des données privées sur votre application et non partagées.

Généralement, les fournisseurs de contenu sont utilisés pour fournir des données à différentes applications ou pour partager des données entre elles. Je me demandais s’il était utile d’avoir des fournisseurs privés et de ne pas vouloir les partager. Existe-t-il des avantages à fournir un access direct à la firebase database ou au système de fichiers?

Merci Rajath

    1. Il programme automatiquement tous vos access à la firebase database côté serveur et de la firebase database de synchronisation dans un thread d’arrière-plan. Cependant, dans votre front-end d’application, le résolveur / fournisseur de contenu exécute normalement les requêtes / transactions à partir du thread d’interface utilisateur par défaut. Vous devez effectuer toutes les transactions de manière asynchrone (c.-à-d. En utilisant un CursorLoader ) pour vous assurer que votre application fonctionne correctement du côté de l’interface utilisateur.
    2. Il localise les access ré-entrants de la firebase database à partir des threads accédant via ContentProvider , de sorte que tout locking puisse avoir lieu entièrement dans vos appels de substitution ContentProvider, plutôt que de les garder dans une couche DB, un service et une couche d’interface utilisateur.
    3. Dans le cadre de ce qui précède, il fournit également une belle interface singleton à vos données. Si vous avez dix classes d’activité dans votre application, il vous suffit de passer par les appels statiques ContentResolver de chacun, contre l’ouverture / fermeture d’une firebase database SQLite. chaque activité lorsque vous passez d’une activité à une autre dans votre application.
    4. ContentProvider est très étroitement lié au modèle SyncAdapter – ce qui signifie que c’est pratiquement la seule solution si vous souhaitez que votre firebase database rest synchronisée avec une firebase database hébergée sur le serveur. (votre application reflète un type de situation api REST)
    5. Il est lié à l’interface ContentObserver de ContentResolver – Il s’agit d’une interface où (entre autres choses utiles) une vue peut s’inscrire en observant un dataset spécifique (via le curseur vers ces données). Ensuite, si vous modifiez le ContentProvider, le CP peut notifier le CR, qui peut à son tour notifier les curseurs pertinents, qui seront à nouveau interrogés et entraîneront la mise à jour de la vue. Ceci est beaucoup plus propre que de devoir garder une trace manuelle de vos vues pour les invalider et les redessiner.

    En ce qui concerne le locking rentrant de la firebase database, il ne le fait pas complètement, mais cela aide – votre classe ContentProvider implémente quatre fonctions simples (interface CRUD) et, si vous choisissez de la remplacer, une cinquième, batchAdd () – – Ceci localise votre locking. La réponse simple est de simplement marquer les quatre / cinq de ces déclarations de fonction “synchronisées” au niveau de la fonction et vous avez terminé. Beaucoup plus propre que d’essayer de trouver le moyen de verrouiller dans 20 lieux différents votre access à votre firebase database.

    Par exemple, un scénario d’utilisation d’applications multiprocessus (par exemple, le service de lecture de musique s’exécute généralement dans un processus distant) entre les deux processus qui, dans une firebase database de partage d’applications, doit utiliser un ContentProvider privé.