我有两项活动。在活动1中,我通过在EditText字段中输入该值将值写入SQLite数据库。一旦我按下提交按钮,数据就被写入,我被移动到另一个活动 - 活动2.活动2也做同样的事情,我可以编写新数据并通过单击按钮将其保存到数据库。所以,我的问题是:我是否需要在活动1中同步方法(在UI的单独线程上)以及活动2中的方法以防止数据库中的线程安全问题?请记住,两种方法都访问相同的数据库,但来自不同的活动。从技术上讲,活动1应该在调用onStop并且新活动(活动2)现在可见时完成。在Android活动生命周期中,这两个活动及其相应的线程是否可能(通过不同的方法)访问数据库会出现任何类型的并发问题?
非常感谢, 马特
答案 0 :(得分:1)
检查此方法
SQLiteDatabase.setLockingEnabled(boolean lockingEnabled)
答案 1 :(得分:0)
你的后台线程是如何创建的?即使在活动停止后,后台线程也将继续运行。
如果活动2中的数据在用户输入某些数据之前不会持久存在,那么看起来锁是不必要的,因为来自活动1的数据应该在几毫秒内持续存在。
但是,如果您正在为最坏的情况做准备,我不会看到数据库锁会如何伤害任何东西(如@Pepi建议的那样)。我可以看到这是一个问题的唯一方法是,如果在后台线程(活动1)中完成工作,它可以在它可以提交数据之前挂起。如果活动2启动它自己的后台工作者来提交数据,那么你可能会在这两个后台线程之间进行竞争。