冗长的操作期间的sqlite事务

时间:2014-06-02 17:36:10

标签: android multithreading sqlite transactions

我正在构建一个应用程序来发布命令。当我在订单中添加商品时,我会从库存中删除商品数量。但如果出现问题或用户取消订单,我需要还原所有库存操作。 所以,当我开始一个新订单时,我调用beginTransaction()。然后我继续添加项目。当我完成后,我使用setTransactionSuccessful()和endTransaction()提交事务。

当在启动事务的线程内部时,我可以“看到”我更改的数据。另一方面,如果我从另一个线程运行查询,则不会提交此数据,因此不存在。

如何在不提交事务的情况下从另一个线程获取这些更改的数据?

我一直在考虑使用线程内的查询池进行某种查询序列化。

我的方式正确吗?

1 个答案:

答案 0 :(得分:0)

事务的上下文是数据库连接(Android中的SQLiteDatabase)。

要允许其他线程访问事务中更改的数据,您必须共享SQLiteDatabase对象。 (使用普通的synchronized机制来管理对该对象的并发访问。)