5

我的应用程序使用该模式,使用和 aSyncAdapter保存用户凭据以将数据存储在数据库中。AccountManagerContentProvider

account删除后,我可以使用此问题中解释的方法删除数据库。通过执行以下操作删除数据库:

boolean deleted = mContext.deleteDatabase(DatabaseHelper.DATABASE_NAME);

这工作正常,但是当我再次登录时,一切仍然存在。感觉就像ContentProvider不知道数据库已被删除。

这个答案中,inazaruk 说:

您需要确保您已经终止了承载使用该特定数据库文件的 ContentProvider 的进程。只有删除它。

杀死清除数据库的过程感觉不对。

有没有更好的办法?

4

1 回答 1

2

如果我不得不这样做,我会尝试以下方式:

添加一些Uri在插入或删除时使用Uri触发数据库删除的ContentProvider. 删除时还要清除所有SQLiteDatabase对小路)。

通过将删除内容放入其中,ContentProvider您应该能够关闭数据库连接并以您知道需要重新创建数据库文件的方式跟踪删除状态。

ContentProviders除非您杀死您的应用程序,否则不要退出,因此您可能正在运行相同的实例,并且可能引用了上面提到的旧文件

于 2012-08-08T17:16:29.673 回答