A receita é simples: estude os recursos básicos da linguagem, estude os recursos específicos, aprenda com os melhores exemplos de uso avançado, e tente captar o "espírito" filosófico da linguagem.
Não dá para programar bem numa linguagem sem estudar profundamente os seus recursos.
Observe alguém tentando falar uma nova língua com um vocabulário restrito; imagine fazer um programa com algumas poucas instruções.
terça-feira, 18 de fevereiro de 2014
sábado, 15 de fevereiro de 2014
Mais sobre Singletons, ObjectManager
Estive fazendo uns testes com Singletons, isso mesmo no plural!
Mas não se alarmem, é Singleton mesmo, com unicidade de instância.
O plural é devido às diversas técnicas disponíveis.
Um dos testes que achei interessante publicar é o código que segue abaixo.
Dei o nome de ObjectManager para a classe, que tem como objetivo guardar referências para objetos a serem utilizadas em mais de um componente do Android. Os objetos são guardados em pares chave e valor, a chave sendo um Long e o valor a referência à uma instância de algum objeto.
A implementação é thread-safe, uso um HashMap envolto com Collections.synchronizedMap() e um AtomicLong para controlar a geração das chaves.
Para incluir um objeto usamos o método put(objeto) que retorna um Long que é a chave para recuperar a referência para o objeto, para isso usamos o método get(key).
Uma vez colocado um objeto no ObjectManager, podemos passar a chave para um componente por um intent.putLong("meuObjeto", chave), e recuperar o objeto recuperando a chave por meio do intent.getLong("meuObjeto").
Para testar, vamos incluir uma String no ObjectManager e passar a chave para uma intent.
Para recuperar no outro componente, usamos o intent.getLong para recuperar a chave e em seguida acessar o objeto salvo no componente anterior.
Notem que temos dois métodos para eliminar referências desnecessárias, remove e clear. Isso é necessário para evitar gasto de memória e também para evitar dados da sessão anterior mantidos pelo Android. O Android pode manter um processo para o aplicativo, mesmo não tendo nenhum componente ativo ou em background.
Por hoje, é isso.
Abraços.
Um dos testes que achei interessante publicar é o código que segue abaixo.
Dei o nome de ObjectManager para a classe, que tem como objetivo guardar referências para objetos a serem utilizadas em mais de um componente do Android. Os objetos são guardados em pares chave e valor, a chave sendo um Long e o valor a referência à uma instância de algum objeto.
A implementação é thread-safe, uso um HashMap envolto com Collections.synchronizedMap() e um AtomicLong para controlar a geração das chaves.
Para incluir um objeto usamos o método put(objeto) que retorna um Long que é a chave para recuperar a referência para o objeto, para isso usamos o método get(key).
Uma vez colocado um objeto no ObjectManager, podemos passar a chave para um componente por um intent.putLong("meuObjeto", chave), e recuperar o objeto recuperando a chave por meio do intent.getLong("meuObjeto").
Para testar, vamos incluir uma String no ObjectManager e passar a chave para uma intent.
Para recuperar no outro componente, usamos o intent.getLong para recuperar a chave e em seguida acessar o objeto salvo no componente anterior.
Notem que temos dois métodos para eliminar referências desnecessárias, remove e clear. Isso é necessário para evitar gasto de memória e também para evitar dados da sessão anterior mantidos pelo Android. O Android pode manter um processo para o aplicativo, mesmo não tendo nenhum componente ativo ou em background.
Por hoje, é isso.
Abraços.
Projetos
Depois de um longo tempo sem programar, estou retomando.
Nos últimos meses praticamente escrevi uma ou outra linha de código, ou seja, quase nada.
Por outro lado, li muito. Assuntos diversos.
Muita teoria.
Agora o objetivo é ganhar ritmo em programação.
Vamos ver.
Nos últimos meses praticamente escrevi uma ou outra linha de código, ou seja, quase nada.
Por outro lado, li muito. Assuntos diversos.
Muita teoria.
Agora o objetivo é ganhar ritmo em programação.
Vamos ver.
Assinar:
Postagens (Atom)