【发布时间】:2018-09-15 13:54:03
【问题描述】:
我正在制作一个应用程序,我正在使用 Android Room Persistence Library 来处理我的数据库层。房间图书馆就像魅力一样,一切都很好。但是我希望在用户卸载应用程序时删除房间创建的数据库。我尝试卸载该应用程序然后再次安装,但不知何故数据库仍然存在,并且应用程序能够从中获取旧数据。
我想可能是因为我的应用程序数据备份在设置中设置为自动,并且 android 正在将其备份到云上并再次将其恢复,但从设置中关闭备份并没有帮助。即使这对我来说听起来也不是一个好的解决方案。
我创建了一个非常简单的类,它扩展了RoomDatabase,下面是有助于回答问题的代码。
我知道我可以在数据库构建器上使用fallbackToDestructiveMigration() 并增加数据库版本。它将从数据库中清除数据。那不是我想要的。
@Database(entities = {UnleashedEntity.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract DaoContract MyDao();
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "user-database")
.build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
编辑
我知道我可以使用ACTION_PACKAGE_REMOVED 意图让我的应用程序知道卸载。我想知道的是,是否有databasebuilder 的配置可以完成这项工作,以及应用程序卸载后数据库如何持续存在。
【问题讨论】:
-
@creativecreatorormaybenot 这不能回答我删除房间数据库的问题。
标签: android android-room