Eu entendo que o Android Activities
tem ciclos de vida específicos e que onCreate
devem ser substituídos e usados para inicialização, mas o que exatamente acontece no construtor? Existem casos em que você também pode / deve substituir o Activity
construtor ou nunca deve tocá-lo?
Estou assumindo que o construtor nunca deve ser usado porque as referências a Activities
não são totalmente limpas (atrapalhando o coletor de lixo) e onDestroy
existe para esse propósito. Isso está correto?
java
android
garbage-collection
android-activity
oncreate
idolatrar
fonte
fonte
Respostas:
Não consigo pensar em nenhum bom motivo para fazer nada no construtor. Você nunca constrói uma atividade diretamente, portanto, não pode usá-la para passar parâmetros. Geralmente, basta fazer as coisas em onCreate.
fonte
Uma boa razão para colocar coisas no construtor como o comentário de Gili havia declarado é o uso de campos finais.
No entanto, se você inicializar coisas no construtor, a vida útil do objeto será um pouco mais longa, embora eu não pense muito porque o
onCreate
seria chamado logo depois.Embora seja contra o meu ideal, eu evitar o construtor para inicialização dos membros da atividade e dependem de
onResume()
eonPause()
para recursos que meu aplicativo está lidando.Pois
onCreate()
eu geralmente o uso para fazer mapeamento de visualização para variáveis locais. Embora o android-annotations já faça isso para mim, raramente tenho umonCreate()
método para minha atividade. Eu ainda o uso no Serviço.No entanto, se você olhar para os membros, pode estar inicializando
eles teriam um método "fechar" que você deve invocar no momento adequado (onResume ou onPause)
eles fariam parte da visualização, o que significa que precisa ser inicializado e então onCreate precisa ser chamado
elas são constantes que não precisam ser colocadas no construtor de qualquer maneira, apenas um final estático bastaria. Isso inclui as constantes Paint e Path que podem ser inicializadas por um bloco estático
fonte
Agora estou em um caso que precisa substituir o construtor. Na verdade, tenho algumas atividades que têm a mesma estrutura. Portanto, em vez de criar muitas atividades, criarei uma atividade "Mestre" e as outras herdarão esta. Portanto, preciso substituir o construtor da atividade filho para poder inicializar algumas variáveis que serão usadas nos métodos oncreate.
Em duas palavras, o construtor faz você simular uma "atividade principal" que pode ser reutilizada por herança!
fonte
Você precisa sobrescrever o Construtor quando sua atividade tiver parâmetros personalizados ou você quiser rastrear chamadas de classes que herdaram de.
fonte
startActivityForResult
, devo incluir um construtor privado em meu componente personalizado, mesmo que essa atividade nunca seja iniciada e não tenha elementos visíveis, eu apenas uso o material de resultado dela.