Android同步数据库操作 – “数据库被锁定”
作者:互联网
我正在编写一个具有“在线模式”的应用程序,即根据需要下载,解析数据并将其插入到SQLite数据库中.所有这些都是由服务完成的.该应用程序包含几个要求服务进行数据更新的活动(根据活动的不同数据).
当用户浏览活动时(无需等待服务完成),很容易获得SQLiteExceptions(消息:数据库被锁定).
我考虑过使用synchronized块,但这会强制用户在服务完成更新时加载新活动(需要加载数据库访问权限)时等待.所以这似乎是一个死胡同.
另一种选择可能是在每个活动的onStop方法中停止更新.当然,更新将被中断,但这不是一个大问题.问题在于我不确定如何处理它.
我的问题是,我该怎样/应该如何处理?
解决方法:
如果您的活动只是阅读而不是像我的情况那样写入数据库,这就是我所做的解决方法:
>创建一个服务(即DatabaseService 0并将其用作访问数据库的中心点(即打开数据库连接),以确保一次只有一个dbhelper.
>需要访问数据库的所有活动和服务都必须建立与DatabaseService的连接
>确保只有您的DownloadService的线程能够写入数据库并且它应该使用事务
>之后,您可以使用getReadable数据库来读取/使用连接来停止下载服务等.
只需确保您只使用1个dbhelper.
标签:android,database,simultaneous 来源: https://codeday.me/bug/20190730/1580662.html