3

我正在编写一个具有“在线模式”的应用程序,即根据需要下载、解析数据并插入到 SQLite 数据库中。所有这些都是由服务执行的。该应用程序包含多个请求服务进行数据更新的活动(不同的数据取决于活动)。

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

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

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

我的问题是,我该如何/应该如何处理这个问题?

4

1 回答 1

7

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

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

只要确保您只使用 1 个 dbhelper。

于 2010-11-30T06:50:47.223 回答