与SQLite的多个连接,同时具有异步任务

时间:2015-05-05 16:19:50

标签: android sqlite android-asynctask parallel-processing

在我的场景中,它有Sync_Class,它与后台的AsyncTasks同步,从我的应用程序同步到我的服务器。 每次我的应用程序执行一个需要从我的SQLite更改数据的操作时,第一步我的应用程序更新我的本地数据库,因为第二步在后台抛出AsyncTask以开始与我的服务器同步。在80%的情况下,我的应用程序运行良好但其他20%的情况会抛出IllegalStateException,因为应用程序尝试重新打开连接或打开已关闭的连接,当我有一个方法在6行以上打开数据库。在这种情况下,我认为问题是数据库中的多个同时加入,我对吗?

在我可以阅读的不同帖子中,人们谈论de SQLite不能执行同时连接并且它序列化连接,因为文件结构不允许......最后一个问题是,如果我们将asyncTasks与sqlite连接要做插入,更新和删除,通过并行编程利用处理器的全部功能,我们有任何工具可以做到这一点吗?或者它是一个不可行的选择,我们需要进行序列化连接?

如果您对我的问题有任何解决方案或任何想法,请帮助我!!在此先感谢!!

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

我这样说是因为我可以看到人们推荐使用SQLiteHelper的一些帖子,因为这有助于管理SQLite中的多个同时连接,但是其他帖子说我遇到了同样的问题......然后就是这样了必须使用SQLiteHelper?或者不是?

如果您需要更多信息或其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

最后我解决了这个问题!!问题是当我需要使用并行编程(background asyncTasks)在数据库中进行读取或写入时,我尝试控制对数据库的接受,打开和关闭数据库。 必须记住我没有使用SQLiteHelper并且我解决了每次活动调用我的数据库类一次的问题,这意味着打开我的数据库一次并在我的应用程序暂停时关闭它并在我的应用程序进入第一个平面时与BDD重新协调然后,时间与我的数据库连接。

在简历中,永远不要关闭数据库,并且可以在SQLite中使用具有多个访问权限的并行编程。问候!!