Como usar onResume ()?

86

Alguém pode me dar um exemplo que use onResume()no Android?

Além disso, se eu quiser reiniciar a atividade no final da execução de outra, qual método é executado - onCreate()ou onResume()?

E se eu quiser atualizar os dados, como faço para colocá-los onResume()?

Zizou
fonte
onResume () é chamado sempre que você navega de volta para a atividade de uma chamada ou outra coisa. Você pode substituir o método onResume da mesma forma que onCreate () e executar a tarefa.
Jibяaᴎ Khaᴎ
Isso pode ajudá-lo a entender mais o ciclo de vida de um aplicativo Android.
TronicZomB
2
A sequência em que esses métodos são chamados é explicada na documentação do desenvolvedor Android: developer.android.com/reference/android/app/…
Michael
1
certifique-se de selecionar uma resposta. bem-vindo ao SO.
donfede

Respostas:

129

Qualquer Activity que é reiniciada tem seu método onResume () executado primeiro.

Para usar este método, faça o seguinte:

@Override
public void onResume(){
    super.onResume();
    // put your code here...

}
Sr. Sandy
fonte
72

Reiniciar o aplicativo irá chamar OnCreate().

Continuar o aplicativo quando ele estiver pausado irá chamar OnResume(). Dos documentos oficiais em https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle, aqui está um diagrama do ciclo de vida da atividade.

o ciclo de vida da atividade do Android, em https://developer.android.com/images/activity_lifecycle.png em https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Viswanath Lekshmanan
fonte
1
Use o hiper link para fornecer links.
Manoj Fegde
o link está me dando problemas às vezes. eu não sei por que
Viswanath Lekshmanan
2
Não recomendo chamar manualmente nenhum dos métodos que fazem parte do ciclo de vida da atividade :), o que pode causar muitos problemas.
Cata
1
@Cata, presumi que Viswanath significava que os métodos serão chamados e atualizei a resposta de acordo.
Mathieu K.
28

A melhor maneira de entender seria ter todos os métodos LifeCycle sobrescritos em sua atividade e colocar um breakpoint (se estiver fazendo check-in no emulador) ou um Log em cada um deles. Você saberá qual será chamado e quando.

Assim como um spoiler, onCreate()é chamado primeiro, então se você pausou a atividade indo para a tela inicial ou iniciando outra atividade, onPause()é chamado. Se o sistema operacional destruir a atividade nesse meio tempo, onDestroy()será chamado. Se você retomar o aplicativo e ele já tiver sido destruído, onCreate()será chamado ou então onResume()será chamado.

Edit: Eu esqueci onStop(), ele é chamado antes onDestroy().

Faça o exercício que mencionei e entenderá melhor.

novato
fonte
1
Há algum tempo que procuro uma explicação tão detalhada, isso realmente me ajudou a criar o ciclo de atividade do aplicativo perfeito. Obrigado.
Keno Clayton
você esqueceu onStart ()
Dory Daniel
9

A maioria das respostas anteriores explica como, por que e quando usar, onResume()mas gostaria de acrescentar algo sobre como recriar o seu Activity.

Quero saber se desejo reiniciar a atividade no final da execução de outro método que é executado onCreate () ou onResume ()

A resposta é onCreate()No entanto, ao decidir recriá-lo de fato, você deve se perguntar quanto das Activitynecessidades deve ser recriado. Se forem dados em um adaptador, digamos para uma lista, você pode chamar notifyDataChanged()o adapterpara preencher novamente o adaptere não ter que redesenhar tudo.

Além disso, se você só precisa atualizar alguns, viewsmas não todos, pode ser mais eficiente ligar invalidate()para os viewque precisam ser atualizados. Isso apenas os redesenhará viewse, possivelmente, permitirá que seu aplicativo seja executado com mais facilidade. Espero que isso possa ajudá-lo.

codeMagic
fonte
5

onResume()é um dos métodos chamados em todo o ciclo de vida da atividade . onResume()é a contrapartida à onPause()qual é chamada sempre que uma atividade é ocultada da vista, por exemplo, se você iniciar uma nova atividade que a oculta. onResume()é chamado quando a atividade que estava oculta volta a ser vista na tela.

Sua pergunta pergunta sobre qual método é usado para reiniciar uma atividade. onCreate()é chamado quando a atividade é criada pela primeira vez. Na prática, a maioria das atividades persiste em segundo plano por meio de uma série de chamadas onPause()e onResume(). Uma atividade só é realmente "reiniciada" onRestart()se primeiro for totalmente interrompida por uma chamada onStop()e, então, trazida de volta à vida. Portanto, se você não estiver realmente interrompendo as atividades com onStop()ele, é mais provável que o use onResume().

Leia o documento do Android no link acima para entender melhor a relação entre os diferentes métodos de estilo de vida. Independentemente de qual método de ciclo de vida você acaba usando, o formato geral é o mesmo. Você deve substituir o método padrão e incluir seu código, ou seja, o que você deseja que a atividade faça naquele ponto, na seção comentada.

@Override
public void onResume(){
 //will be executed onResume
}
Rarw
fonte
É onResume () chamado quando clicamos em um item na visão?
rajiv_
1
Clicar em um item não chama necessariamente onResume. O método onResume será chamado se essa exibição estiver oculta e restaurada ou no carregamento inicial antes de ser totalmente criada.
Rarw
show error não chamou super.onResume ()
sirmagid
2

KOTLIN

Qualquer Activity que é reiniciada tem seu método onResume () executado primeiro.

Para usar este método, faça o seguinte:

override fun onResume() {
        super.onResume()
        // your code here
    }
Iker Solozabal Granados
fonte
1

Após o início de uma atividade, reiniciado (onRestart () acontece antes de onStart ()), ou pausado (onPause ()), onResume () chamado. Quando a atividade está no estado de onResume (), a atividade está pronta para ser usada pelo usuário do aplicativo.

Estudei um pouco o ciclo de vida da atividade e aqui está meu entendimento sobre este tópico: Se você quiser reiniciar a atividade (A) no final da execução de outra, pode haver alguns casos diferentes.

  1. A outra atividade (B) foi pausada e / ou interrompida ou destruída, e a atividade A possivelmente foi pausada (onPause ()), neste caso, a atividade A chamará onResume ()

  2. A atividade B foi pausada e / ou interrompida ou destruída, a atividade A possivelmente foi interrompida (onStop ()) devido a algo de memória, neste caso, a atividade A irá chamar onRestart () primeiro, onStart () em segundo, então onResume ()

  3. A atividade B foi pausada e / ou interrompida ou destruída, a atividade A foi destruída, o programador pode chamar onStart () manualmente para iniciar a atividade primeiro, então onResume () porque quando uma atividade está no status destruída, a atividade foi não iniciado, e isso acontece antes de a atividade ser completamente removida. Se a atividade for removida, a atividade precisa ser criada novamente. Chamando onStart () manualmente acho que é porque se a atividade não for iniciada e for criada, onStart () será chamado depois de onCreate ().

Se você quiser atualizar os dados, faça uma função de atualização de dados e coloque a função dentro do onResume (). Ou coloque uma função loadData dentro de onResume ()

É melhor entender o ciclo de vida com a ajuda do diagrama de ciclo de vida da atividade.

Kira Nofans
fonte