我正在制作一个应用程序,我正在使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
我知道我可以使用ACTION_PACKAGE_REMOVED意图让我的应用程序知道卸载.我想知道的是,是否有配置databasebuilder可以完成工作,以及数据库在卸载后如何保留.
所以我说非常复杂的数据库,它使用many to many数据库设计foreign keys并连接表和它的Room数据库。我想为它创建备份系统,因为它是离线应用程序,我需要导出数据库并将其存储到谷歌驱动器的应用程序文件夹。最近几天我已经阅读了很多关于它但仍然有点困惑我看到有方法可以将数据库导出为CSV,JSON,excel文件或仅作为.db文件,但是这样做的最佳实践是什么以及专业人员如何处理用它?