Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从sqlite触发器调用Java方法(android)_Android_Sqlite_Triggers_Callback - Fatal编程技术网

从sqlite触发器调用Java方法(android)

从sqlite触发器调用Java方法(android),android,sqlite,triggers,callback,Android,Sqlite,Triggers,Callback,我想要使用sqlite触发器注册回调方法 比如说, public void printLog(){ Log.i("TAG","1 row added"); } 此方法在sqlite中插入任何行后调用 可能吗 怎么做 您可以设置内容观察者此链接将帮助接收SQLite提供的内容更改的回调。我不认为Android会直接公开它们,但它确实有一些提供更改通知的CursorAdapter 您也可以使用,但遗憾的是,它没有告诉您所做的更改类型,可能是删除、插入或更新 如果您控制与DB接口的ContentP

我想要使用sqlite触发器注册回调方法 比如说,

public void printLog(){
 Log.i("TAG","1 row added");
}
此方法在sqlite中插入任何行后调用

可能吗


怎么做

您可以设置内容观察者此链接将帮助接收SQLite提供的内容更改的回调。我不认为Android会直接公开它们,但它确实有一些提供更改通知的CursorAdapter

您也可以使用,但遗憾的是,它没有告诉您所做的更改类型,可能是删除、插入或更新

如果您控制与DB接口的ContentProvider,那么您可以触发一个意图或使用来发送一个特殊的Uri通知,该通知标识表和操作。您可以通知的Uri示例可能是:content://my-authority/change/table-name/insert

但即使这样,您也不知道哪些行受到更改的影响

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


我很想听听这些是否是更好的解决方案

为什么不在代码下调用,无论您在哪里插入记录?为什么要通过
触发器进行
调用
?这只是一个例子。我希望在更改sqlite dbs后收到通知。为什么不检查db insert api的返回值?它将返回新插入行的行ID,如果发生错误,则返回-1。