Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android应用中的并发sqlite访问_Android_Sqlite_Android Activity_Android Service - Fatal编程技术网

android应用中的并发sqlite访问

android应用中的并发sqlite访问,android,sqlite,android-activity,android-service,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 活动阅读是一项非常小的任务(相对于阅读所花费的时间而言) 但是服务写入数据库的时间很长(有时需要5-10分钟) 现在,当服务正在运行并且我单击通知时,必须从数据库读取的ActivityA无法执

我的申请有:

 Activity A that reads from sqlite database
 Service with notification that writes to the database
 on clicking Notification, Activity A opens up
活动阅读是一项非常小的任务(相对于阅读所花费的时间而言) 但是服务写入数据库的时间很长(有时需要5-10分钟)

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

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

经过进一步研究,我发现了这个

当我试图在sqliteopenhelper类中的方法中实现此功能时,由于我的应用程序使用MinAPI10,所以出现了错误。那么,我如何让这个方法在API10上工作,或者有没有其他方法可以进行并行数据库访问呢 ?

有没有其他方法可以进行并行数据库访问

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

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


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

如果您正在列表中显示一些数据,这就是使用延迟加载的好理由

我们还可以看看这些文章:


当您的活动位于前台并且需要数据库中已有的数据集时,您可以暂停写入。您的服务和活动是否处于两个不同的流程中?如果没有,只需共享数据库的一个单例实例。