(Android)寻找用于管理多个数据库的多线程访问的模式,这些数据库有时会相互连接

时间:2016-10-17 20:10:31

标签: android multithreading sqlite sqliteopenhelper

我已经在iOS上发布的应用程序中使用了三个独立的数据库。我的应用程序的工作方式是在启动时,如果在单独的线程中检测到任何更新,它将更新2个数据库。有时它会完全替换文件,有时它只会添加新记录。

在另一个线程中,可以随时访问这三个数据库。这是可以的,但对于某些查询,我必须通过attach语句将第三个数据库与其他数据库之一结合起来,以执行复杂的查询。

在某些设备上,我偶尔会遇到一个异常,即我尝试连接的数据库已经在使用中。为了解决这个问题,我添加了一个synchronized函数来关闭我试图附加到的数据库的可读/可写数据库实例,并在连接到所述数据库之前调用它,但是错误仍然出现在某些设备上并且解决方案可以显然还是有另一个线程重新打开它,无论如何我都要重新打开它。

核选项是创建一些主数据库类,其中包含所有内容的同步,但我想知道是否有其他人拥有他们已经遵循的架构来对抗这种情况。

0 个答案:

没有答案