我正在创建数据库,如下面的代码所示。
Room.databaseBuilder(MyApp.getInstance().getApplicationContext(), MyDatabase.class, "my-room-database").build();
由于用户存储的数据是该用户的个人数据,因此我希望在用户退出应用程序时删除所有数据,表以及数据库(如果可能)本身。
在用户注销时,我尝试执行以下操作,但是它不起作用。
public static void destroyInstance() {
if(petCareDatabase != null) {
petCareDatabase.clearAllTables();
}
petCareDatabase = null;
}
有人可以在需要时帮助我找到清理数据库的正确方法。
答案 0 :(得分:0)
创建一个公共静态实例方法以使数据库实例为空
public abstract class DepotDatabase extends RoomDatabase { private static AppDatabase INSTANCE; public abstract UserDao userDao(); public static AppDatabase getAppDatabase(Context context) { if (INSTANCE == null) { INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "user-database") .allowMainThreadQueries()//Use Caution here .build(); } return INSTANCE; } public static void destroyInstance() { INSTANCE = null; } }
然后在主要活动或使用它的活动中
@Override protected void onDestroy() { AppDatabase.destroyInstance(); super.onDestroy(); }