Android SQLite DB notifications
Je suis en train d'écrire une application Android qui doit être notifié dès qu'une donnée de base de données SQLite changements (de toute nouvelle ligne a été ajoutée, supprimée ou mise à jour).
Est-il un moyen via un programme d'écouter ces notifications ?
Est écrit DB déclenche pour chaque table de la seule manière possible ?
SQLLite opérations de base de données sont celles de votre application uniquement (ou) pourrait être de n'importe où?
OriginalL'auteur Sriram | 2012-01-09
Vous devez vous connecter pour publier un commentaire.
SQLite fournit Les Données De Notification De Changement De Rappels. Je ne pense pas que Android expose directement, mais il n'a, par exemple, CursorAdapter qui fournit des notifications de changement.
Comme thinksteep demandé cependant, ne vous attendez votre DB être modifiés en dehors de la portée de votre propre application?
Ce que les notifications de changement ne CursorAdapter fournir?
CursorAdapter les notifications sont basés sur Android trucs qui ne sont pas liées à des modifications de base de données directement. C'est au programmeur de notifier que lorsque les modifications de base de données.
OriginalL'auteur NuSkooler
Vous pouvez enregistrer un observateur de la classe comme DataSetObserver
Alors à chaque fois que vous changez quelque chose, vous pouvez appeler
cursor.registerDataSetObserver(..)
pour vous inscrire à observer des changements.Ce n'est pas bien documenté, mais je suis sûr qu'il y a quelques exemples de la
Cela déclenche lorsque le programmeur appels de fournisseur de contenu.notifyChange, et de ne pas détecter automatiquement les modifications.
OriginalL'auteur Merlin
Vous pouvez également utiliser le getContentResolver().registerContentObserver mais malheureusement, il ne vous dit pas quel type de changement a été fait, il pourrait être un delete, insert ou update.
Si vous contrôlez le ContentProvider que les interfaces avec la DB, alors vous pourriez le feu d'une Intention ou d'utiliser getContentResolver().notifyChange pour envoyer un spécial Uri de la notification qui identifie à la fois la table et de l'action. Un exemple d'Uri vous pourriez informer avec peut-être:
content://my-authority/change/table-name/insert
Mais même alors, vous ne savez pas exactement quelles lignes ont été effectuées par le changement.
Semble que les déclencheurs d'écrire dans un journal de modification de table donnera la garantie de vous entendre parler de tous les changements peu importe d'où ils viennent, et vous pouvez savoir exactement id et de l'action qui s'est produite. Malheureusement, il le moyen le plus lent des insertions, mises à jour et les suppressions et cela signifie que vous avez probablement besoin d'un Service quelconque de processus et de supprimer les modifications.
J'aimerais savoir si c'est une meilleure solution!
OriginalL'auteur satur9nine