Pergunta

O ciclo de vida de uma atividade está documentado em muitos lugares, mas não consegui encontrar o que preciso. Essa é minha atividade, ela tem um construtor e o método onCreate. No meu projeto também tenho um registro nesses métodos e toda vez que vou de retrato para paisagem vejo que os dois métodos são executados. Por que meu construtor é chamado? não é a atividade na pilha e a instância da minha atividade está na memória, portanto, quando a alteração da configuração ocorrer, apenas o oncreate e on holdingistancestate devem acontecer (é claro, o onResume). Por que o construtor é sempre chamado, quem está chamando? É toda vez que algo é alterado na configuração, os dois métodos são chamados (um após o outro, nesta mesma sequência).

public TestActivity()
{
    super(R.menu.main_menu, tag);
}
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

Eu estava brincando com meu aplicativo de amostra, mas quero saber mais detalhes, alguém pode me esclarecer o cenário quando o construtor está incluído? Eu encontrei uma grande quantidade de documentação sobre o ciclo de vida, mas nenhuma explica os detalhes quando o construtor é incluído

Edit1: Eu li em alguns lugares que há uma pilha em que as atividades são colocadas para que da próxima vez elas sejam ativadas e rodando mais rápido, mas e quando a configuração for alterada? É necessário chamar o construtor e os métodos oncreate?

Foi útil?

Solução

Conseqüentemente, não há razão para o construtor invocar a atividade a menos que você tenha o construtor com params (onCreate invoca para nós de qualquer maneira ...).No entanto, basicamente, parece uma coisa do java onCreate, provavelmente chamando o construtor padrão de atividades que é

public ActivityName(){} // This might get call because onCreate somewhere under the hood invoking Activity :)

Tente a mesma coisa com o construtor com parâmetros como

public ActivityName(String s){}// This wouldn't be call unless you explicitly call it.

Espero que isso ajude,

No entanto, esperaria por uma resposta de mais especialista :)


Edit: Então, quando você gira seu telefone, que chama onCreate, pois será criado novamente e onCreate provavelmente chama o construtor padrão para invocar a instância de sua atividade:) ... Esqueci de mencionar isso antes.

Outras dicas

Na rotação, sua atividade será reiniciada completa.Você pode evitar isso com android:configChanges="keyboardHidden| orientation" em seu manifesto.

Como @rekire respondeu, a atividade é reiniciada na rotação da tela.Aqui, reiniciar significa que o framework cria outra instância da atividade, é por isso que o construtor de sua classe de atividade é chamado e, em seguida, o onCreate ().A nova instância de atividade substitui a antiga que será finalmente reciclada por GC, se sua referência não for mantida por outros.

Se desejar evitar o reinício da atividade na rotação da tela, leia esta pergunta .

Desenhei um diagrama UML para descrever o ciclo de vida da atividade do Android .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top