java同时访问多线程的SQLITE数据库
我目前正在为我的项目开发一个安卓应用程序
我的项目目标是使用Handler post delayed
在后台运行多个倒计时计时器(不超过50个)。
每隔一秒钟,我都要查询我的表,以便对某些特定的列进行fecth和更新
我的查询以try catch
结尾,我正在finally
关闭数据库。
这种方法适用于单个线程,但一旦它变成多个线程,
它给我一个类似the database is already close but morethan one thread is trying to access it
的错误
所以我想出了一个主意,除非关闭整个应用程序,否则不要关闭数据库
所以我的问题是,我应该按照我的想法去做吗?还是有更好的方法
# 1 楼答案
从the official docs
以及:
因此,正如您可能理解的那样,获取SQLiteOpenHelper的实例与拥有一个可以访问数据库的对象不同。您需要分别管理要创建的所有线程的单例实例,以及对
getWritableDatabase()
或getReadableDatabase()
的调用编辑
此外,在Official SQLite Documentation中还指出,为了在多线程应用程序中使用,还需要进行额外的设置。我不认为我必须说Android不是为多线程环境而设计的,参见this answer please。你为什么要设置障碍?坚持太好的做法。做进一步的研究。谷歌优先