数据库经常随机删除自己

时间:2010-06-28 03:16:32

标签: android database

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

在任何情况下,明确启用锁定和正确同步对我来说都是有用的。