Android SQLite数据库通知

时间:2012-01-09 04:33:55

标签: android sqlite android-notifications

我正在编写一个Android应用程序,只要给定的SQLite数据库发生更改(添加,删除或更新任何新行),就需要通知该应用程序。

是否有任何编程方式来收听这些通知?

是否只为每个表编写DB触发器?

3 个答案:

答案 0 :(得分:5)

SQLite提供Data Change Notification Callbacks。我不认为Android直接暴露它们,但它确实有例如CursorAdapter,它提供了一些更改通知。

然而,当thinksteep问道,你是否希望你的数据库在你自己的应用程序范围之外被更改?

答案 1 :(得分:1)

您可以注册一个观察者类,例如DataSetObserver

然后,每当您更改某些内容时,您都可以调用cursor.registerDataSetObserver(..)来注册观察更改。

没有详细记录,但我确信那里有一些例子

答案 2 :(得分:0)

您也可以使用getContentResolver().registerContentObserver,但遗憾的是它不会告诉您进行了哪些更改,可能是删除,插入或更新。

如果您控制与数据库接口的ContentProvider,那么您可以触发Intent或使用getContentResolver().notifyChange发送一个特殊的Uri通知来识别表和操作。您可以通知的示例Uri可能是:content://my-authority/change/table-name/insert

但即使这样,你也不确切地知道改变会影响哪些行。

似乎触发器写入更改日志表将保证您听到所有更改,无论它们来自何处,您都可以知道发生的确切ID和操作。不幸的是,它意味着更慢的插入/更新/删除,这意味着您可能需要某种服务来处理和删除更改。

我很想知道这些是否是更好的解决方案!