2012-08-08 139 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不要放棄,除非你殺了你的應用程序,所以你可能有相同的實例上述