0

该应用程序在同一个活动中有两个片段。Fragment A 有一个按钮然后按下该按钮将启动一个并行任务,该任务将插入或更新数据库中的大量记录。Fragment B 包含 a ViewPagerViewPager正在使用FragmentStatePagerAdapter并持有 Fragment C,每个页面都会从数据库中查询并显示一条记录。

Fragment B 将正常工作,直到按下 Fragment A 中的按钮。之后,ViewPager 中的随机页面将无法正常工作。当记录存在时,某些页面会查询空记录。而且有两种情况。

第一种情况,Fragment A 会有插入和更新操作。也就是最坏的情况,Fragment C中的某些指定记录会得到null结果,即使滑动ViewPager重新打开指定页面,该记录仍然是null,直到Fragment A中的并行任务完成并重新打开Fragment B,然后Fragment C 又可以正常工作了。

第二种情况,Fragment A 会有插入和查询操作,没有更新操作。这种情况不会得到空结果,但是一些指定的记录会卡住,直到Fragment A中的并行任务完成。

是什么导致了这些问题?先感谢您。

4

1 回答 1

1

我不确定,但是,我认为您需要在 Fragment A 中对数据库操作使用事务处理。当您从 Fragment A 在数据库中插入或更新数据时,您需要使用以下方法:

database.beginTransaction();
database.setTransactionSuccessful();
database.endTransaction();

请查看此链接以获取有关此方法和用途的详细说明。 http://www.tothenew.com/blog/sqlite-locking-and-transaction-handling-in-android/

于 2018-04-09T06:27:10.497 回答