Android 到SQLite的多个连接,同时执行异步任务

Android 到SQLite的多个连接,同时执行异步任务,android,sqlite,android-asynctask,parallel-processing,Android,Sqlite,Android Asynctask,Parallel Processing,在我的场景中,它有一个Sync_类,可以在后台将异步任务从我的应用程序同步到我的服务器。 每次我的应用程序执行一个需要从我的SQLite更改数据的操作时,第一步我的应用程序更新我的本地数据库,第二步在后台抛出一个AsyncTask以启动与我的服务器的同步。在80%的情况下,我的应用程序工作得很好,但其他20%的情况下会抛出一个IllegalStateException,因为当我有方法在上面的6行中打开数据库时,应用程序会尝试重新打开连接或打开一个关闭的连接。在这种情况下,我认为问题在于数据库中同

在我的场景中,它有一个Sync_类,可以在后台将异步任务从我的应用程序同步到我的服务器。 每次我的应用程序执行一个需要从我的SQLite更改数据的操作时,第一步我的应用程序更新我的本地数据库,第二步在后台抛出一个AsyncTask以启动与我的服务器的同步。在80%的情况下,我的应用程序工作得很好,但其他20%的情况下会抛出一个IllegalStateException,因为当我有方法在上面的6行中打开数据库时,应用程序会尝试重新打开连接或打开一个关闭的连接。在这种情况下,我认为问题在于数据库中同时存在多个访问,对吗

在我能读到的不同的帖子中,人们谈论反SQLite不能同时执行连接,它序列化了连接,因为文件结构不允许。。。最后一个问题是,如果我们使用sqlite连接执行多个异步任务,以执行插入、更新和删除操作,从而利用处理器的全部功能进行并行编程,那么我们有什么工具可以做到这一点?或者这是一个不可行的选项,我们需要进行序列化连接

如果你对我的问题有任何解决方案或想法,请帮助我!!提前谢谢


更多信息: 我的BDDclass有一个用于开放数据库的方法。当我需要执行查询、rawquery等时。。。在一个简单的函数或void中,我调用我的数据库类,打开数据库,执行查询或多个查询,最后关闭数据库。当我知道我有一个带有多个查询函数的大型进程时,在本例中,我创建了BDDclass,并在开始时打开bdd,在结束时关闭该进程的数据库

我这样说是因为我可以看到一些帖子,人们建议使用SQLiteHelper,因为这有助于管理SQLite中的多个同时连接,但其他帖子说,它们有与我相同的问题。。。那么必须使用SQLiteHelper吗?还是不


如果您需要更多信息或其他信息,请告诉我。

我终于解决了问题!!问题是,我试图控制对数据库的访问,在需要使用并行编程(后台异步任务)读取或写入数据库时打开和关闭数据库。 必须记住,我不使用SQLiteHelper,我解决了每次活动调用一次数据库类的问题,这意味着在我的应用暂停时打开一次数据库并关闭,在我的应用进入第一个平面时与BDD重新连接,然后在其他时间与数据库连接


在resume中,永远不要关闭数据库,您可以在SQLite中使用具有多个访问权限的并行编程。你好

您不需要每次都打开或关闭数据库,您可以让它保持打开状态。我认为关于并发访问,您可能是对的,但不是100%确定。这些真的是长期运行的操作吗?如果只是一秒钟左右(或更少),那么为同步访问设置助手类(我认为这不是必需的,但可能非常方便)可能没有那么糟糕。这取决于!!这是我的同步类取决于我需要发送的信息量,有可能设备在2天内没有同步,然后我们有更多的信息。。。那么最好的选择是永远不要关闭数据库?我可以获得现有的数据库连接吗?