这个应用程序在同一个活动中有两个片段。片段A有一个按钮,然后按下这个按钮就会启动一个并行任务,这会在数据库中插入或更新很多记录。片段B包含一个ViewPager,ViewPager使用FragmentStatePagerAdapter并持有片段C,每个页面将查询并显示数据库中的一条记录。
片段B将正常工作,直到按下片段A中的按钮。之后,ViewPager中的随机页面将无法正常工作。当记录存在时,某些页面将查询空记录。有两种情况。
第一种情况,片段A将有插入和更新操作。这是最坏的情况,一些指定的记录在分片C中会得到一个空的结果,即使滑动ViewPager重新打开指定的页面,该记录仍然是空的,直到分片A中的并行任务完成并重新打开分片B,然后分片C才能正常工作。
第二种情况,片段A将有插入和查询操作,没有更新操作。这种情况不会得到null结果,但一些指定的记录将被卡住,直到片段A中的并行任务完成。
是什么导致了这些问题?提前谢谢你。
发布于 2018-04-09 14:27:10
我不确定,但是,我认为您需要对片段A中的数据库操作使用事务处理。当您从片段A插入或更新数据库中的数据时,您需要使用以下方法:
database.beginTransaction();
database.setTransactionSuccessful();
database.endTransaction();请查看此链接以获取有关此方法和用途的详细说明。http://www.tothenew.com/blog/sqlite-locking-and-transaction-handling-in-android/
https://stackoverflow.com/questions/49725694
复制相似问题