Esta página explica as práticas recomendadas para interagir com o mapa de navegação no app.
Use SupportNavigationFragment em vez de NavigationView, sempre que possível
SupportNavigationFragment é um wrapper para facilitar o processamento dos callbacks de ciclo de vida NavigationView. Assim, você não precisa gerenciar esses callbacks. Esse método é menos propenso a erros e é a maneira preferida de usar a navegação no app. Ao usar SupportNavigationFragment, não invoque eventos de ciclo de vida NavigationView.
Se você estiver usando NavigationView, use uma ordem estrita ao invocar métodos de ciclo de vida
NavigationView hospeda o mapa de navegação e segue de perto os eventos de ciclo de vida como atividades e fragmentos do Android, realizando ações específicas quando esses eventos são invocados. NavigationView executa várias inicializações
em NavigationView#onCreate e NavigationView#onStart, e limpezas em
NavigationView#onStop e NavigationView#onDestroy, bem como quando outros
eventos de ciclo de vida são processados.
Os métodos de ciclo de vida NavigationView têm o mesmo significado que as atividades ou fragmentos do Android. Por exemplo, onCreate() de NavigationView é traduzido aproximadamente para e precisa ser invocado por callbacks de ciclo de vida da atividade ou fragmento do Android. Como os callbacks de ciclo de vida NavigationView são baseados e invocados na mesma ordem que os callbacks de ciclo de vida do Android, é necessária uma ordem forte desses métodos NavigationView. Caso contrário, você poderá ter
vazamentos de memória
e erros de interface, localização não atualizada e outros problemas.
Para mais informações sobre o ciclo de vida da atividade do Android, consulte a seção Conceitos de ciclo de vida da atividade na documentação para desenvolvedores do Android.
A tabela a seguir mostra quando outros métodos de ciclo de vida precisam ser invocados, após métodos de ciclo de vida especificados:
| Método de ciclo de vida | Invocado onde no ciclo de vida da atividade | Invocado após qual método de ciclo de vida |
|---|---|---|
onConfigurationChanged()
|
Invocado quando a interface está em primeiro plano e a configuração muda. | Sempre depois de onStart()
|
onTrimMemory()
|
Invocado quando uma atividade está em segundo plano. | Sempre depois de onPause()
|
onSaveInstance()
|
Invocado antes de uma atividade ser destruída. | Sempre depois de onStop()
|
Não chame esses métodos de ciclo de vida várias vezes sem chamar o método de fechamento correspondente primeiro. Além disso, se alguns desses callbacks de ciclo de vida do Android forem gerenciados pelo próprio app e o NavigationView for adicionado ao fragmento após a criação ou inicialização, o app precisará chamar os métodos específicos na ordem correta para inicializar o SDK de navegação.
Para mais orientações sobre como usar esses métodos, consulte o app de demonstração do SDK de navegação.
Se você estiver usando NavigationView, invoque eventos de ciclo de vida da atividade ou do fragmento, não de ambos
Para manter a ordem estrita dos métodos de ciclo de vida, invoque esses eventos nos callbacks de ciclo de vida da atividade ou do fragmento, que recebem esses eventos em ordem. Essa abordagem garante que os apps não precisem coordenar entre fragmentos e atividades e causar chamadas duplicadas.