0

我的申请有:

 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,或者是否有其他方法可以进行并行数据库访问?

4

1 回答 1

0

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

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

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


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

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

也看看这些文章:

于 2013-10-02T13:09:57.753 回答