Práticas recomendadas para interação de navegação com o mapa

Esta página explica as práticas recomendadas para interagir com o mapa de navegação no seu app.

Use SupportNavigationFragment em vez de NavigationView sempre que possível

O SupportNavigationFragment é um wrapper para a conveniência de processar os 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 o Navigation no seu app. Ao usar SupportNavigationFragment, não invoque eventos de ciclo de vida NavigationView.

Se você estiver usando NavigationView, use uma ordem rígida ao invocar métodos de ciclo de vida

O NavigationView hospeda o mapa de navegação e segue de perto os eventos do ciclo de vida como atividades e fragmentos do Android, realizando ações específicas quando esses eventos são invocados. O NavigationView executa várias inicializações em NavigationView#onCreate e NavigationView#onStart, além de limpezas em NavigationView#onStop e NavigationView#onDestroy, bem como quando outros eventos do 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 é aproximadamente traduzido e precisa ser invocado por callbacks de ciclo de vida da atividade ou do fragmento do Android. Como os callbacks do ciclo de vida NavigationView são baseados e invocados na mesma ordem que os callbacks do ciclo de vida do Android, é necessário ordenar esses métodos NavigationView. Caso contrário, você poderá encontrar vazamentos de memória, 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 do ciclo de vida da atividade na documentação para desenvolvedores Android.

A tabela a seguir mostra quando outros métodos do ciclo de vida precisam ser invocados, depois dos métodos especificados:

Método de ciclo de vida Invocado em que parte do ciclo de vida da atividade Invocado após qual método do ciclo de vida
onConfigurationChanged() Invocado quando a interface está em primeiro plano e a configuração muda. Sempre após onStart()
onTrimMemory() Invocado quando uma atividade está em segundo plano. Sempre após onPause()
onSaveInstance() Invocado antes que uma atividade seja destruída. Sempre após 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, lembre-se de que, se alguns desses callbacks do ciclo de vida do Android forem gerenciados pelo próprio app e o NavigationView for adicionado ao fragmento após a criação ou a inicialização, o app precisa chamar os métodos específicos na ordem correta para inicializar corretamente o SDK de navegação.

Para mais orientações sobre o uso desses métodos, consulte o app de demonstração do SDK do Navigation.

Se você usar NavigationView, invoque eventos de ciclo de vida da atividade ou do fragmento, não dos dois.

Para manter a ordem estrita dos métodos de ciclo de vida, invoque esses eventos dos callbacks do ciclo de vida da atividade ou do fragmento, que recebem esses eventos em ordem. Essa abordagem garante que os apps não precisem se coordenar entre fragmentos e atividades e causar chamadas duplicadas.