2 votes

Appeler une méthode Java à partir d'un trigger sqlite (Android)

Je veux enregistrer une méthode de rappel en utilisant un trigger sqlite. par exemple,

public void printLog(){
 Log.i("TAG","1 row added");
}

cette méthode est appelée après l'insertion d'une ligne dans sqlite.

Est-ce possible ?

Comment faire ?

1voto

Manish Points 3614

SQLite fournit Rappels de notification de changement de données . Je ne pense pas qu'Android les expose directement, mais il dispose par exemple de CursorAdapter qui fournit certaines notifications de changement.

Vous pouvez également utiliser le getContentResolver().registerContentObserver mais malheureusement, il ne vous dit pas quel type de changement a été effectué, il peut s'agir d'une suppression, d'une insertion ou d'une mise à jour.

Si vous contrôlez le ContentProvider qui s'interface avec la base de données, vous pouvez déclencher un Intent ou utiliser l'option getContentResolver().notifyChange pour envoyer une notification Uri spéciale qui identifie à la fois la table et l'action. Un exemple d'Uri avec lequel vous pourriez envoyer une notification pourrait être : content://my-authority/change/table-name/insert

Mais même dans ce cas, vous ne savez pas exactement quelles lignes ont été affectées par le changement.

Il semble que les déclencheurs qui écrivent dans une table de journal des changements vous garantiront d'être informé de tous les changements, quelle que soit leur origine, et vous pourrez connaître l'identifiant exact et l'action qui s'est produite. Malheureusement, cela signifie que les insertions/mises à jour/suppressions sont plus lentes et que vous aurez probablement besoin d'un service quelconque pour traiter et supprimer les modifications.

J'aimerais savoir s'il existe une meilleure solution !

0voto

DjHacktorReborn Points 2502

Vous pouvez définir le contenu observer ce lien vous aidera Reçoit des rappels pour des changements de contenu http://developer.Android.com/reference/Android/database/ContentObserver.html

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