我正在处理大量XML数据,以验证AsyncTask对象中的本地数据存储。首先,我尝试使用事务进行这些操作,但是当事务正在进行时,用户的任何其他操作都会使应用程序冻结并等待事务完成,有时甚至会使应用程序停止响应。
事务分为几个步骤,有时每次迭代计数到几百个。由于我从使用事务到实时查询的问题非常缓慢,但解决了冻结问题,导致应用程序非常耗电。
我的问题是;有没有办法阻止事务锁定数据库?或者我的问题是交易前准备不足的结果?
答案 0 :(得分:0)
交易往往会在开展业务时锁定您的表格,因此您无法同时在同一个实例上播放交易和非交易查询。
但是,您需要做的是首先处理您的数据(xml)(这可能是耗时的),并在您准备好数据后再进行启动。
P.S。我个人建议你在插入多个记录时使用事务(以有效的方式),因为它创建了一个 Journal-file 来处理所有插入并加速了SQLite操作
答案 1 :(得分:0)
使您的交易更小,并且别忘了(就像我一样)在抛出异常时仍然结束交易-使用try,catch,最后...