如何销毁Android Room Database实例?

时间:2018-08-17 07:48:18

标签: android android-room android-architecture-components

我正在创建数据库,如下面的代码所示。

Room.databaseBuilder(MyApp.getInstance().getApplicationContext(), MyDatabase.class, "my-room-database").build();

由于用户存储的数据是该用户的个人数据,因此我希望在用户退出应用程序时删除所有数据,表以及数据库(如果可能)本身。

在用户注销时,我尝试执行以下操作,但是它不起作用。

public static void destroyInstance() {
    if(petCareDatabase != null) {
        petCareDatabase.clearAllTables();
    }
    petCareDatabase = null;
}

有人可以在需要时帮助我找到清理数据库的正确方法。

1 个答案:

答案 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();
        }