gpt4 book ai didi

android - 数据库经常随机删除自己

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:47 24 4
gpt4 key购买 nike

我的应用程序中有一个普通的 SQLite 数据库,通过我自己的 ContentProvider 进行管理并通过 SQLiteOpenHelper 实现。

仅在 Droid 上,每隔几周左右,数据库就会消失。我有几个用户写信给我,现在我自己也看到了。我添加了一些调试信息(当你每隔几周才看到它时很难重现),在一个例子中,它只是发生在小部件更新之间 - 首先,小部件被显示并显示数据很好,下一次,SQLiteOpenHelper 的onCreate 被调用。

应用程序本身做了一些多线程恶作剧,但所有 ContentProvider 实现都有同步关键字,所有对数据库的访问都是通过内容提供者进行的,并且在上面描述的实例中,没有多线程正在进行(应用程序本身并没有运行,只是小部件)。

同样,这仅适用于 Droid。我从来没有在G1上看到过它。我从不关闭数据库,但它是一个内容提供者,听起来我一开始就不应该这样做(我记得 hackbod 说这个想法是操作系统将在必要时关闭应用程序的进程,这将自动关闭数据库)。

有什么想法吗?

最佳答案

根据文档,SQLiteDatabase 默认启用锁定 (SQLiteDatabase.setLockingEnabled)。在我的应用程序中,我在打开后明确将其打开,并添加了一些其他更偏执的同步以确保多个线程无法同时访问数据库,这似乎已修复它。

我仍然很好奇为什么这个问题只发生在摩托罗拉 Droid 上,我有这种预感,这款手机默认禁用锁定,但这听起来有点奇怪 - 毕竟 Droid 是一个几乎没有制造商定制的手机。

无论如何,明确启用锁定和适当的同步对我来说是个窍门。

关于android - 数据库经常随机删除自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129874/

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