我想在我的应用程序中使用WebService进行事件同步来执行自定义日历。异步任务锁数据库
一切都很好(呃,不是真的)。
日历活动,以获得当月的所有活动,并存储在数据库中启动一个AsyncTask
和onPostExecute
方法更新到每天适当标记的看法。当用户获取到日历活动,然后迅速回到主活动几次
我的问题来了,让我们说,例如
Main Activity
>Calendar Activity
(按返回键)>Main Activity
>Calendar Activity
(按后退按钮)> ...
此时活动冻结由于database lock has not been available for 30 sec.
或应用崩溃由于一个SQLiteConstraintException: error code 19
编辑:
SQLiteConstraintException
行为不再发生
由于更新是在我的应用程序非常重要,我每次重新输入日历活动我删除数据库与服务器的新数据,即使重新进行填充时间强硬是一样的,在这一点上是锁定的地方。
EDIT:
我已经改变
Delete > Insert
样式:Update
所有数据(设定flag
列= 0)>Insert
新数据(设定flag
柱= 1)>Delete
(其中flag
柱= 0)
我已经试过this解决方案取消关于Activi的AsyncTask
TY没有成功
结束,我相信这个问题是我不完全明白我在做什么,所以我失去了一些东西真的很重要(或基本)的过程。
任何帮助改善我的代码或只是指着我正确的方向,将不胜感激。
在此先感谢!
EDIT:
我的应用程序具有其
Aplication
是负责创建单个数据库连接(getWriteableDatabase();
)和这种独特的连接如的可达槽方法。
'SQLiteConstraintException'应该与数据库锁定问题无关。异常是你的代码中的一个错误,比如在sqlite表中定义了'NOT NULL'的地方插入'null'。 http://stackoverflow.com/questions/9599809/does-yieldifcontendedsafely-lose-the-benefits-of-a-transaction可能是锁问题的解决方案 – zapl
@zapl你是对的,'SQLiteConstraintException'因为另一个抛出问题并没有涉及到这个问题。现在已经解决了。 谢谢! –