我正在尝试在我的应用程序中使用与 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();