Room 数据库重置为默认值,这是在从后台清除应用程序时通过预填充数据库设置的
Room database reset to default values which was set by prepopulating database when clearing app from background
我有一个数据库,其中预先填充了一些工作正常的表。
我已经预先填充了我的数据库。像这样
Room.databaseBuilder(
get(),
AppDatabase::class.java,
APP_DATABASE
)
.createFromAsset("app.db")
.fallbackToDestructiveMigration()
.build()
我面临的问题是。当用户添加自己的数据时,它被正确插入并显示在我的屏幕上。
当我将应用程序移至后台并将其从那里删除并重新打开应用程序时。
我没有看到我的数据,那里只有默认数据。
如有任何帮助,我们将不胜感激。
您应该使用 Dao & annotation & ... 将数据插入数据库。
您可以将其用于 java
https://developer.android.com/codelabs/android-room-with-a-view#0
这是针对科特林的
https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0
我遇到了同样的问题 - 您只需要从您的代码中删除 fallbackToDestructiveMigration()
最后你的代码应该看起来像
@Volatile
private var INSTANCE: AppDatabase? = null
fun getDatabase(
context: Context
): AppDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
DATABASE_NAME
)
.allowMainThreadQueries()
.createFromAsset("databases/yourdb.db")
.build()
INSTANCE = instance
instance
}
}
我有一个数据库,其中预先填充了一些工作正常的表。 我已经预先填充了我的数据库。像这样
Room.databaseBuilder(
get(),
AppDatabase::class.java,
APP_DATABASE
)
.createFromAsset("app.db")
.fallbackToDestructiveMigration()
.build()
我面临的问题是。当用户添加自己的数据时,它被正确插入并显示在我的屏幕上。 当我将应用程序移至后台并将其从那里删除并重新打开应用程序时。 我没有看到我的数据,那里只有默认数据。
如有任何帮助,我们将不胜感激。
您应该使用 Dao & annotation & ... 将数据插入数据库。
您可以将其用于 java https://developer.android.com/codelabs/android-room-with-a-view#0
这是针对科特林的 https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0
我遇到了同样的问题 - 您只需要从您的代码中删除 fallbackToDestructiveMigration()
最后你的代码应该看起来像
@Volatile
private var INSTANCE: AppDatabase? = null
fun getDatabase(
context: Context
): AppDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
DATABASE_NAME
)
.allowMainThreadQueries()
.createFromAsset("databases/yourdb.db")
.build()
INSTANCE = instance
instance
}
}