2012-08-08 136 views
5

我的应用程序使用SyncAdapter模式,保存用户凭据使用AccountManagerContentProvider将数据存储在数据库中。删除帐户时删除数据库

account被删除我可以删除使用方法的分贝this question解释。数据库被删除做:

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

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

this answer,inazaruk说:

你需要确保你杀了承载,它使用特定的数据库文件 ContentProvider的过程。并且只有比 删除它。

杀死进程清除一分贝感觉不对。

是否还有更好的事是什么?

+0

提到为什么删除数据库文件运行,可能是旧的文件引用?是不是从数据库中删除足够的数据? – zapl 2012-08-08 16:59:01

+0

@zapl:是的。我可以做一些像'从表格中删除;' – Macarse 2012-08-08 18:29:44

回答

2

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

添加一些Uri当你插入或使用Uri触发您ContentProvider内部数据库删除删除。当也删除明确的SQLiteDatabase所有引用,因为它是可能的,你仍然可以通过访问旧的数据库文件(如果您删除的Linux文件和你有一个文件打开,你仍然可以使用它 - 它只是通过不再访问路径)。

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

ContentProviders不要放弃,除非你杀了你的应用程序,所以你可能有相同的实例上述