提问者:小点点

应用卸载后Android room数据库不删除


我无法删除我的应用程序的本地房间数据库,无论我做什么。 我试着卸载应用程序,但没用。 然后我在AndroidManifest文件中创建了android:allowbackup=“false”,这也没有帮助。

有没有人可以建议一个删除应用程序数据库的方法。

DB帮助程序:-

Database(version = 1, entities = [User::class, Cart::class, Purchase::class, Product::class], exportSchema = false)
@TypeConverters(Converters::class)
public abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
    abstract fun cartDao(): CartDao
    abstract fun purchaseDao(): PurchaseDao
    abstract fun productDao(): ProductDao

    companion object {

        private var appDatabase: AppDatabase? = null

        fun getInstance(context: Context): AppDatabase {
            if (appDatabase == null) {
                appDatabase = buildDatabaseInstance(context)
            }
            return appDatabase!!
        }

        private fun buildDatabaseInstance(context: Context): AppDatabase {
            return Room.databaseBuilder(
                context,
                AppDatabase::class.java,
                "consumer_app"
            ).addCallback(object: Callback() {
                override fun onCreate(db: SupportSQLiteDatabase) {
                    super.onCreate(db)
                    Executors.newSingleThreadScheduledExecutor().execute {
                        getInstance(context).cartDao().insert(Cart())
                    }
                }
            })
                .allowMainThreadQueries()
                .build()
        }
    }
}

请注意(如果有关系的话):

手机-Android 10

编译DKversion 28

MINSDK版本21

TargetSDK版本28


共1个答案

匿名用户

请尝试以下操作:

companion object {
    @Volatile
    private var INSTANCE: AppDatabase? = null

    fun getDatabase(context: Context): AppDatabase {
        return INSTANCE ?: synchronized(this) {
            val instance = Room.databaseBuilder(
                context.applicationContext,
                AppDatabase::class.java,
                "consumer_app"
            )
                .allowMainThreadQueries()
                .build()
            INSTANCE = instance
            instance
        }
    }