我想要使用 sqlite 触发器注册回调方法
例如,
public void printLog(){
Log.i("TAG","1 row added");
}
在 sqlite 中插入任何行后调用此方法。
是否可以?
怎么做?
SQLite 提供数据变更通知回调 http://www.sqlite.org/c3ref/update_hook.html。我不认为 Android 直接公开它们,但它确实有 CursorAdapter 等,它提供了一些更改通知。
您可以使用也可以使用getContentResolver().registerContentObserver http://developer.android.com/reference/android/content/ContentResolver.html#registerContentObserver%28android.net.Uri,%20boolean,%20android.database.ContentObserver%29但不幸的是它并没有告诉你做了什么样的改变,它可能是删除、插入或更新。
如果您控制与数据库接口的 ContentProvider,那么您可以触发 Intent 或使用getContentResolver().notifyChange http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange%28android.net.Uri,%20android.database.ContentObserver%29发送标识表和操作的特殊 Uri 通知。您可以通知的 Uri 示例可能是: content://my-authority/change/table-name/insert
但即使如此,您也不确切知道哪些行受到更改的影响。
似乎写入更改日志表的触发器将保证您听到所有更改,无论它们来自何处,并且您可以知道发生的确切 ID 和操作。不幸的是,这意味着插入/更新/删除速度较慢,并且意味着您可能需要某种服务来处理和删除更改。
我很想听听这些是否有更好的解决方案!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)