首页 > 解决方案 > 如何销毁 Android Room Database 实例?

问题描述

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

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

当用户退出应用程序时,我想删除所有数据、表和数据库本身,因为存储的数据是该用户的个人数据。

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

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

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

标签: androidandroid-roomandroid-architecture-components

解决方案


创建公共静态实例方法以使 db 实例为空

 

            公共抽象类 DepotDatabase 扩展 RoomDatabase {

               私有静态 AppDatabase 实例;

               公共抽象 UserDao userDao();

               公共静态AppDatabase getAppDatabase(上下文上下文){
               如果(实例 == 空){
                   实例 =
                         Room.databaseBuilder(context.getApplicationContext(),
                         AppDatabase.class,“用户数据库”)
                            .allowMainThreadQueries()//这里要小心
                            。建造();
               }
               返回实例;
              }
              公共静态无效销毁实例(){
                实例=空;
                 }
               }

然后在主要活动或使用它的活动中

 

        @覆盖
             受保护的无效 onDestroy() {
             AppDatabase.destroyInstance();
             super.onDestroy();
        }

推荐阅读