gpt4 book ai didi

android - Android SQLite 中的多线程怎么样?

转载 作者:IT王子 更新时间:2023-10-29 06:19:57 26 4
gpt4 key购买 nike

在我的应用程序中,我必须实现一些 UI 和同步服务。它在后台运行并更新数据。同步服务不是很简单,它使用多线程。

所以,这是我的故事:当我开始开发这个应用程序时,我对 sqlite 一无所知,所以我没有在 Java 中使用任何线程同步。结果:我收到许多异常,例如“SQLiteException:数据库已锁定:BEGIN EXCLUSIVE;”

然后我用常规的 Java synchronized () {} block 同步我的所有事务。一切都变得更好了。但是我使用 Cursors 为我的列表实现 CursorAdapter。因此,有时我会收到相同的“SQLiteException:数据库已锁定:BEGIN EXCLUSIVE;”

我结束了创建一个小型线程安全的 sqlite 实用程序,它处理所有线程安全的东西。此外,我必须为我的 UI 使用类似 ArrayAdapter 的东西(从 Cursor 读取所有数据并在读取后关闭它,同时同步此 block )。所以,它工作正常

但是,我不喜欢这种处理 UI 的方式,因为这个解决方案使 UI 变得非常慢 - 从游标读取一些数据相当快,但比使用 CursorAdapter 慢

那么,谁得到了这道题的答案呢?谢谢

最佳答案

于是,终于得出了解决方案。在这里。

我阅读了一些论坛、谷歌群组,发现 sqlite 数据库应该只打开一次。因此,我使用单例实现了这一点。

此外,我实现了一些数据库代码来同步所有写操作(以防止多个线程同时执行写操作)。而且我不关心打开游标,从中读取。

经过几天的测试,我没有收到用户的错误报告,所以我认为这是可行的

在我之前的工作中,我在应用程序中多次打开了 sqlite 数据库,这就是问题所在。

关于android - Android SQLite 中的多线程怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5576675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com