30 votes

Android. Fournisseur de contenu ou base de données?

Depuis que j'ai vu une présentation de la Google IO , je suis un peu confus dans la question, si c'est mieux d'utiliser les fournisseurs de contenu ou de bases de données. Ou il ne fait aucune différence si je ne veux pas d'échanger des données avec d'autres applications.

Si j'ai bien compris ce droit, les fournisseurs de contenu basé sur SQLite DBs et il est également possible que le contenu d'entre eux est uniquement accessible pour mon application.

Pouvez-vous nous donner quelques explications?

Merci beaucoup,

Mur

50voto

CommonsWare Points 402670

À mon humble avis, les fournisseurs de contenu sont des solutions à la recherche de la peine de problèmes.

Il y a certainement la peine de problèmes, notamment pour les données de processus de publication. Par exemple, vous devez utiliser un fournisseur de contenu pour fournir des suggestions de recherche à une Zone de Recherche Rapide.

Cependant, pour une utilisation interne au sein d'une application, je suis encore sceptique. Les avantages (par exemple, le thread unique que Robert mentionne) à mon humble avis sont compensés par les coûts (par exemple, une diminution de la flexibilité par rapport à SQLite et rawQuery()).

Un de ces jours, j'espère que le dessin animé ampoule brille au dessus de ma tête, que j'ai enfin de quoi le core Android équipe a été pensée à l'égard de fournisseurs de contenu. Qui a certainement qui s'est passé pour les autres domaines de Android. En ce moment, la pensée ballon au-dessus de ma tête est remplie avec des points d'interrogation, pas d'ampoules.

Si vous implémentez un fournisseur de contenu, gardez à l'esprit qu'ils sont accessibles par d'autres applications par défaut. Vous devez inclure android:exported="false" dans la <provider> élément à les rendre privés à votre application.

12voto

Robert Points 3903

À l'aide d'un fournisseur de contenu vous donnera une conception modulaire, et de rendre votre vie plus facile si vous à un certain point dans l'avenir aimerais atteindre les données à partir d'autres applications. Si vous êtes certains que les données ne seront nécessaires à partir d'une application, vous pouvez ainsi agir directement sur la base de données.

Il est un particulier, SQLite limitation, vous devez être conscient de, et c'est que SQLite est mono-utilisateur uniquement. Ce que cela signifie, c'est que vous aurez besoin pour garder votre base de données accessible à partir de plusieurs threads en même temps. Ce n'est généralement pas un problème dans un fournisseur de contenu, car ils ont presque toujours un seul thread mise en œuvre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X