Android SQLite beginTransactionNonExclusive()阻止数据库访问

时间:2016-03-25 12:39:51

标签: android sqlite android-sqlite

我在后台线程中有一个非常长时间运行的事务......

  • 遍历批量400条记录
  • 检查是否存在
  • 如果存在则更新,否则创建新的
  • 再次遍历所有这些,进行一些操作

并且批次数可能会有所不同。

问题是:只要事务正在运行,我就无法访问数据库。我在整个应用程序中使用SQLiteOpenHelper的单个实例访问数据库。

我尝试了yieldIfContendedSafely()方法,但它似乎无法正常工作(或者我使用的方法不正确?)

如果我在事务运行时尝试访问数据库,它不会抛出任何异常。它就像在队列中一样坐在那里,并在交易结束时立即运行。

PS:在这种情况下访问数据库是安全的,因为事务在一个表上运行,而我正在尝试读取另一个表。

0 个答案:

没有答案