当前位置 : 主页 > 手机开发 > android >

Android同步数据库操作 – “数据库被锁定”

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在编写一个具有“在线模式”的应用程序,即根据需要下载,解析数据并将其插入到SQLite数据库中.所有这些都是由服务完成的.该应用程序包含几个要求服务进行数据更新的活动(根据
我正在编写一个具有“在线模式”的应用程序,即根据需要下载,解析数据并将其插入到SQLite数据库中.所有这些都是由服务完成的.该应用程序包含几个要求服务进行数据更新的活动(根据活动的不同数据).

当用户浏览活动时(无需等待服务完成),很容易获得SQLiteExceptions(消息:数据库被锁定).

我考虑过使用synchronized块,但这会强制用户在服务完成更新时加载新活动(需要加载数据库访问权限)时等待.所以这似乎是一个死胡同.

另一种选择可能是在每个活动的onStop方法中停止更新.当然,更新将被中断,但这不是一个大问题.问题在于我不确定如何处理它.

我的问题是,我该怎样/应该如何处理?

如果您的活动只是阅读而不是像我的情况那样写入数据库,这就是我所做的解决方法:

>创建一个服务(即DatabaseService 0并将其用作访问数据库的中心点(即打开数据库连接),以确保一次只有一个dbhelper.
>需要访问数据库的所有活动和服务都必须建立与DatabaseService的连接
>确保只有您的DownloadService的线程能够写入数据库并且它应该使用事务
>之后,您可以使用getReadable数据库来读取/使用连接来停止下载服务等.

只需确保您只使用1个dbhelper.

网友评论