Eu sei que não é utilizado no momento, mas eu estava fazendo uns testes e funcionou colocando suspend nas funções de salva e usando o lifecycleScope, só deu erro, porque eu tentei utilizar toda vez que eu tentava fazer uma alteração no banco, a minha dúvida é, não pode usar isso muitas vezes, quando usar? Eu corrigi o erro, mas ainda não sei se fazer desse jeito é uma boa prática.
Eu até estava vendo a série de coroutines, mas mesmo assim, não sei como aplicar nesse caso e porque eu vi que as Coroutines são usadas só no curso de webAPI só que o código tá muito diferente desse exemplo, então queria saber se estou usando da forma correta ou onde posso ver como usar da forma correta:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
configuraRecyclerView()
configuraFab()
val db = Room.databaseBuilder(
this,
AppDatabase::class.java,
"orgs.db"
).build()
lifecycleScope.launch {
val produtoDao = db.produtoDao()
adapter.atualiza(produtoDao.buscarTodos())
}
}
override fun onResume() {
super.onResume()
val db = AppDatabase.instancia(this)
lifecycleScope.launch {
val produtoDao = db.produtoDao()
adapter.atualiza(produtoDao.buscarTodos())
}
}
private fun configuraBotaoSalvar() {
val botaoSalvar = binding.activityFormularioProdutoBotaoSalvar
val db = AppDatabase.instancia(this)
val produtoDao = db.produtoDao()
lifecycleScope.launch {
produtoDao.salva(
Produto(
nome = "nome 1",
descricao = "desc",
valor = BigDecimal("10.0")
)
)
}
botaoSalvar.setOnClickListener {
lifecycleScope.launch{
val produtoNovo = criaProduto()
produtoDao.salva(produtoNovo)
finish()
}
}
}