在我的情況下,保存的資料可以在模型更改的情況下被清除,有更好的方法嗎?
private val dataSource = try {
MyObjectBox.builder().androidContext(context).build().boxFor(XXXX::class)
} catch (e: Exception) {
BoxStore.deleteAllFiles(context, BoxStoreBuilder.DEFAULT_NAME)
MyObjectBox.builder().androidContext(context).build().boxFor(XXXX::class)
}
我想知道是否有這樣的事情:https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#fallbackToDestructiveMigration()
uj5u.com熱心網友回復:
這種方法有點hacky,但為什么不呢!?我的意思是,如果您不關心丟失現有資料...
我可以建議兩個可能的改進:
boxFor()應該在之外,try因為這里的任何錯誤都與模型更改無關。- 而不是
Exception,您可以更具體。例如DbSchemaException,對于與模型相關的例外,或作為“中間”解決方案,DbException用于捕獲任何與資料庫相關的例外(包括DbSchemaException)。
因此,為了調整您的代碼,它可能如下所示:
private val store = try {
MyObjectBox.builder().androidContext(context).build()
} catch (e: DbSchemaException) {
BoxStore.deleteAllFiles(context, BoxStoreBuilder.DEFAULT_NAME)
MyObjectBox.builder().androidContext(context).build()
}
private val box = store.boxFor(XXXX::class)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477372.html
標籤:安卓 对象框 objectbox-android objectbox-java
