我正在尝试在我的应用程序中使用与 WebService 进行事件同步的自定义日历。
一切都很好(嗯,不是真的)。
Calendar Activity 启动一个AsyncTask
以便获取当前月份事件并将它们存储在数据库中,并且该onPostExecute
方法更新视图以正确标记每一天。
我的问题是当用户进入日历活动然后快速回到主要活动几次时,比如说
Main Activity
> Calendar Activity
(按返回按钮)> Main Activity
> Calendar Activity
(按返回按钮)> ...
此时 Activity 由于 adatabase lock has not been available for 30 sec.
或 App 因 a 而死机SQLiteConstraintException: error code 19
编辑:
SQLiteConstraintException
行为不再发生
因为更新在我的应用程序中非常重要,所以每次我重新进入日历活动时,我都会删除数据库并用服务器新数据重新填充它,即使它是相同的,此时也是锁定的位置。
编辑:
我已将
Delete > Insert
样式更改为:Update
所有数据(设置flag
列 = 0)>Insert
新数据(设置flag
列 = 1)>Delete
(其中flag
列 = 0)
我已经尝试过这个解决方案来取消AsyncTask
活动完成但没有成功
我确信问题是我不完全理解我正在做的事情的过程,所以我错过了一些非常重要(或基本)的东西。
任何帮助改进我的代码或只是指出我正确的方向,将不胜感激。
提前致谢!
编辑:
我的应用程序有一个负责
Aplication
创建单个数据库连接(getWriteableDatabase();
MyApp.getDatabase();