android - 与同时异步任务的 SQLite 的多个连接

标签 android sqlite android-asynctask parallel-processing

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

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

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

<小时/>

更多信息: 我的 BDDclass 有一个打开数据库的方法。当我需要在一个简单的函数或 void 中执行查询、原始查询等时,我调用我的数据库类,打开数据库,执行查询或多个查询,最后我们关闭数据库。当我知道我有一个包含多个带有查询的函数的大型流程时,在这种情况下我创建 BDDclass 并在开始时打开 bdd 并在最后关闭该流程的数据库。

我这么说是因为我看到一些帖子人们建议使用 SQLiteHelper,因为这有助于管理 SQLite 中的多个同时连接,但其他帖子说有和我一样的问题......那么必须使用 SQLiteHelper ?或者不是?

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

最佳答案

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

在恢复中,永远不要关闭数据库,您可以在 SQLite 中使用具有多个访问的并行编程。问候!!

关于android - 与同时异步任务的 SQLite 的多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058274/

相关文章:

android - 从 Asynctask 进程获取通知

android - 如何在单个进程中从 url 下载多个图像?

java - 如何从图像按钮获取位图

android - Facebook SDK 仅在自己的时间轴上提要,不在 friend 的新闻提要上

javascript - 交易速度与查询速度

android - SQLite 何时将其缓存保存到磁盘? (在安卓上)

java - 从 AsyncTask 返回位图

安卓调试ndk : permission denied

java - Canvas 捏缩放像 Snapseed android 应用程序

java - 如何将文本效果应用于 { } 大括号内的单词