android应用程序中的并发sqlite访问

时间:2013-10-02 12:55:54

标签: android sqlite android-activity android-service

我的申请表:

 Activity A that reads from sqlite database
 Service with notification that writes to the database
 on clicking Notification, Activity A opens up

ActivityA的阅读是一项非常小的任务(参考阅读时间) 但服务写入数据库的时间很长(有时需要5-10分钟

现在当服务正在运行并且我点击通知时,必须从数据库中读取的ActivityA无法执行其读取,因为已经有服务写入该数据库。

所以activityA必须等待(5-10分钟)从数据库中读取。

进一步研究我遇到了这个

  

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#beginTransactionNonExclusive()

当我尝试在sqliteopenhelper类中的我的方法中实现这个时,我得到错误,因为我的应用程序使用min api 10.所以我如何让这个方法适用于api 10或者是否还有其他方法可以进行并行数据库访问 ?

1 个答案:

答案 0 :(得分:0)

  

还有其他方法可以进行并行数据库访问吗?

我认为没有特别的方法来实现它。您应该使用经典Java同步来同步访问数据库。

最重要的是,您必须确保只有一个连接到数据库(您不能同时从两个不同的连接写/读)。并尝试考虑使用Singleton。在这种情况下(以及其他情况下),它是非常有效和干净的解决方案,您可以避免访问数据库的许多问题。


您提到您的任务可以持续5-10分钟。 在类似的情况下,每个用户都应该知道你正在后台执行一些计算e.q.显示一些progressDialog,progressBar或者只是启动图像动画。

如果你在List中显示一些数据,这是使用延迟加载的好理由。

还要看这些文章: