Estou seguindo este curso sobre o uso do Room no desenvolvimento Android: https://developer.android.com/codelabs/basic-android-kotlin-compose-update-data-room A classe DB é definida para criar um novo DB somente se ainda não existir um:
@Database(entities = [Item::class], version = 1, exportSchema = false)
abstract class InventoryDatabase : RoomDatabase() {
abstract fun itemDao(): ItemDao
companion object {
@Volatile
private var Instance: InventoryDatabase? = null
fun getDatabase(context: Context): InventoryDatabase {
return Instance ?: synchronized(this) {
Room.databaseBuilder(context, InventoryDatabase::class.java, "item_database")
.fallbackToDestructiveMigration()
.build()
.also { Instance = it }
}
}
}
}
A versão do DB nunca é alterada, nem minhas classes DB, DAO ou Entity (que alterariam o esquema). Presumo que é isso que desencadearia a migração destrutiva.
Consequentemente, eu esperaria que, uma vez que o BD fosse criado, seu conteúdo persistisse. No entanto, percebo que quando reconstruo meu aplicativo e o executo novamente, o conteúdo (às vezes?) desaparece. Por que isso aconteceria? Estou de alguma forma entulhando o sistema de arquivos com instâncias de BD (até onde eu sei, o local do sistema de arquivos que o Room usa por padrão requer acesso root, então não consigo dizer)?
Desmarque "limpar armazenamento do aplicativo antes da implantação" na configuração de execução.