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
        }
    }