Utilize getApplicaitonContext() ao invés de getBaseContext() , assim vc utilizará o contexto global da aplicação ao invés do contexto da activity. Por ser ligado à Activity, ao ter sua activity destruída e recriada posteriormente, este contexto vai impedir que a anterior seja coletada pelo GC.
O Contexto é utilizado basicamente para obter dados dos Resources da aplicação, como strings, temas, layouts, etc... A aplicação possui um, e cada Activity também. O Application context não pode ser utilizado para criar componentes visuais, mas pras demais operações é o mais indicado pra evitar leaks como mencionei acima.
Rafael
Em segunda-feira, 26 de novembro de 2012 14h27min44s UTC-2, Guilherme Bernardi escreveu:
Boa tarde pessoal.Estou desenvolvendo um aplicativo com banco de dados SQLite e é o meu primeiro no caso.Gostaria de entender algumas coisas que no mínimo são bem iniciantes acredito eu. Se alguém puder me ajudar eu ficarei muito grato.1 - Já desenvolvi aplicativos antes, mas qual seria a definição exatamente do Context que é muito utilizado em instâncias pelo aplicativo todo e etc?2 - Agora a dúvida quanto ao SQLite. No construtor do banco de dados, é exigido um parâmetro de context:- new DbHelper(context, nomeBanco, factory, versaoBanco, scriptSQLCreate, scriptSQLDelete)Eu estou trabalhando com uma classe de Persistencia que é responsável pela comunicação com a classe do Banco de Dados e por persistir os dados no banco de dados.Então no método de Grava() da Persistencia eu criei uma propriedade:private Context Contexto;E nas sub-classes por exemplo Pedido, eu criei também uma propriedade de Contexto. Que é carregada no OnCreate da Activity do CadastroPedido, quando a classe é instanciada:pedido = new Pedido(getBaseContext());E no método Grava() da classe de Pedido, que faz um Override do método Grava() da classe de Persistencia, eu preencho os atributos da Persistencia incluindo o Contexto:this.setContexto(this.getContextoPedido()); Após carregar as propriedades da persistencia incluindo o Contexto e chamando o método Grava():super.Grava();No método grava() da classe de persistência eu instancio o Banco de dados, passando o contexto carregado na propriedade da persistência, que passei através das classes:DataBase = new DadosBD(this.getContexto());E então trabalho com os dados carregados, fazendo inserção, atualização ou deleção dos dados.Esta é a maneira correta de trabalhar com esse Contexto exigido pelo SQLite?Se é a maneira correta, estou tendo problemas para passá-lo através de uma classe de implementa Parcelable.Obrigado desde já.






0 comentários:
Postar um comentário