我爲我的應用程序使用DataProvider
來處理CRUD操作。現在DataProvider
正在使用嵌套的內部類SQLiteOpenHelper
。 CRUD操作的所有定義的DataProvider
本身內定義和SQLiteOpenHelper
類負責建立數據庫,說abc.db和定義兩個表說表1和表2。現在,當用戶登錄到應用程序時,數據庫被創建(顯然如果不存在),並且通過使用ContentResolver
查詢和CursorLoader
來加載到列表中來顯示用戶的數據。這部分我已經實現了。在Android中運行時創建數據庫
問題出現在多用戶場景中。假設用戶決定註銷並使用其他賬戶登錄或註冊新賬戶,因爲保留了前一個用戶的數據,以前的數據也會加載到ListView
和/或從數據庫中獲取數據的其他視圖中。根據我的邏輯,這可以通過在同一設備上爲每個新用戶創建新的數據庫實例來阻止。但由於ContentProvider
在Activity的onCreate()
之前初始化數據庫,我發現這很難實現。任何想法如何實施?
不能在數據庫的表中有一個名爲USER_ID的字段,並且當您加載數據時,請查看記錄的用戶的USER_ID並執行一個'select_columns from your_table where USER_ID = this_users_id'? –
第一個用戶註銷時不能刪除數據庫嗎? http://stackoverflow.com/questions/5683840/how-to-delete-all-items-from-sqlite-in-android,如果你有用戶數據作爲共享首選項,你也可以清除。只是谷歌它:) – edwinj
@GeorgeD很明顯,我可以,但這意味着檢查每個字段的每個查詢和不需要的列的額外開銷。我認爲這種解決方案是最後的選擇。 –