我正在构建一个应用程序来发布命令。当我在订单中添加商品时,我会从库存中删除商品数量。但如果出现问题或用户取消订单,我需要还原所有库存操作。 所以,当我开始一个新订单时,我调用beginTransaction()。然后我继续添加项目。当我完成后,我使用setTransactionSuccessful()和endTransaction()提交事务。
当在启动事务的线程内部时,我可以“看到”我更改的数据。另一方面,如果我从另一个线程运行查询,则不会提交此数据,因此不存在。
如何在不提交事务的情况下从另一个线程获取这些更改的数据?
我一直在考虑使用线程内的查询池进行某种查询序列化。
我的方式正确吗?
答案 0 :(得分:0)
事务的上下文是数据库连接(Android中的SQLiteDatabase
)。
要允许其他线程访问事务中更改的数据,您必须共享SQLiteDatabase
对象。
(使用普通的synchronized
机制来管理对该对象的并发访问。)