I have the following problem, when searching the data in the base and filling my object to manipulate on the screen, it is taking a long time and leaking memory, I tried to optimize but could not.
The funniest is when I made the first queries I was quick, after I started giving this, does anyone know how to solve ??
public List<ProdutoTO> buscarTodos() {
// Produtos
List<ProdutoTO> produtos = new ArrayList<>();
// Pega o cursor com todos os dados
Cursor cursor = findAll();
// Pega o primeiro elemento
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Produto produto = readRow(cursor);
List<SaldoEstoque> saldos = this.saldoEstoqueDAO.getSaldoEstoque(produto, UtilGlobal.usuario);
ProdutoTO produtoTO;
if (saldos == null && saldos.size() == 0) {
produtoTO = new ProdutoTO(produto, saldos.get(0));
} else {
produtoTO = new ProdutoTO(produto, null);
}
produtos.add(produtoTO);
cursor.moveToNext();
}
// Fecha o cursor
cursor.close();
// Retorna os dados
return produtos;
}
private Produto readRow(Cursor cursor) {
Produto produto = new Produto();
try {
// As colunas são recuperadas na ordem que foram selecionadas
produto.setId(cursor.getLong(cursor.getColumnIndex("id")));
produto.setCodigo(cursor.getString(cursor.getColumnIndex("codigo")));
produto.setEan(cursor.getString(cursor.getColumnIndex("ean")));
produto.setNome(cursor.getString(cursor.getColumnIndex("nome")));
produto.setPreco(cursor.getFloat(cursor.getColumnIndex("preco")));
produto.setPrecocusto(cursor.getFloat(cursor.getColumnIndex("precocusto")));
produto.setPrecoultimacompra(cursor.getLong(cursor.getColumnIndex("precoultimacompra")));
produto.setUnidademedida(this.unidadeMedidaDAO.getUnidade(cursor.getLong(cursor.getColumnIndex("idunidademedida"))));
//produto.setGrupoProduto(this.grupoProdutoDAO.getGrupoProduto(cursor.getLong(cursor.getColumnIndex("idhierarquia"))));
//produto.setFamilia(this.familiaDAO.getFamilia(cursor.getLong(cursor.getColumnIndex("idfamilia"))));
produto.setInativo(cursor.getInt(cursor.getColumnIndex("inativo")));
} catch (Exception e) {
}
return produto;
}