我正在尝试使用SQLiteTransactionListener来了解批处理事务何时提交,因此我可以向ContentProvider中的观察者发送notifyChange事件。
代码启动批量操作的事务,并为每个插入或更新嵌套事务。
我收到批量操作的每个startTransaction的onBegin消息,但是我从未收到onCommit或onRollback
我已经注销了开始和结束交易调用,以确认每个交易的嵌套调用都在完成,如下所示,这些调用始终是匹配的。
Finish batch operation: success = true
End batch transaction
Begin batch transaction
Bulk transaction: onBegin
Inserting values into "Messages"table
insert values transaction begin
insert values transaction success
notifyChange not sent due to currently processing batch operation
insert values transaction end
Inserting values into "Content"table
insert values transaction begin
insert values transaction success
notifyChange not sent due to currently processing batch operation
insert values transaction end
Update values transaction begin
Update values transaction success
notifyChange not sent due to currently processing batch operation
Update values transaction end
Finish batch operation: success = true
End batch transaction
Download begining for content ID 12
我还查看了SQLiteDatabase here的代码,但是没有理由不会调用此函数。我试图找到这个在线(这里和谷歌搜索)的一些例子,但只找到API文档。
有没有人使用这个课程取得了一些成功?或者有人可以告诉我为什么我不会参加这个活动?
答案 0 :(得分:0)
根据SQLiteDatabase.java的代码,嵌套事务调用beginTransaction()将清除或替换父事务设置的SQLiteTransactionListener。每次调用beginTransaction()时,都会更改mTransactionListener。
private void beginTransaction(SQLiteTransactionListener transactionListener,
boolean exclusive) {
mTransactionListener = transactionListener;
}