Bom dia a todos
Eu não sei se ele vai falar isso mais para frete (se foi falado isso mais para frete pode ignorar), mas na aula que ele explica sobre a implementação do banco de dados e do DAO na activity teve instanciamento repetido no código do onCreate e no onResume:
class ListaProdutosActivity : AppCompatActivity(R.layout.activity_lista_produtos) {
//properties omitidas
override fun onCreate(savedInstanceState: Bundle?) {
//outros códigos omitidos
val db = AppDatabase.instanciaBanco(this)
val produtoDao = db.produtoDao()
adapter.atualiza(produtoDao.buscaTodos())
}
override fun onResume() {
//outros códigos omitidos
val db = AppDatabase.instanciaBanco(this)
val produtoDao = db.produtoDao()
adapter.atualiza(produtoDao.buscaTodos())
}
Ao invés de ter que instanciar mais de 1 vez, eu não poderia fazer a propertie ser uma lazy para ter que chamá-lo apenas 1 vez?
Eu fiz desse jeito e deu certo:
class ListaProdutosActivity : AppCompatActivity(R.layout.activity_lista_produtos) {
private val db by lazy {
AppDatabase.instanciaBanco(this)
}
private val produtoDao by lazy {
db.produtoDao()
}
//outras properties omitidas
override fun onCreate(savedInstanceState: Bundle?) {
//outros códigos omitidos
adapter.atualiza(produtoDao.buscaTodos())
}
override fun onResume() {
super.onResume()
adapter.atualiza(produtoDao.buscaTodos())
}