Prácticas recomendadas para la interacción con el mapa de navegación

En esta página, se explican las prácticas recomendadas para interactuar con el mapa de Navigation en tu app.

Usa SupportNavigationFragment en lugar de NavigationView siempre que sea posible.

SupportNavigationFragment es un wrapper para la comodidad de controlar las devoluciones de llamada de ciclo de vida de NavigationView, por lo que no necesitas administrar esas devoluciones de llamada por su cuenta. Este método es menos propenso a errores y es la forma preferida de usar Navigation en tu app. Cuando uses SupportNavigationFragment, asegúrate de no invocar eventos de ciclo de vida de NavigationView.

Si usas NavigationView, usa un orden estricto cuando invoques métodos de ciclo de vida.

NavigationView aloja el mapa de Navigation y sigue de cerca los eventos del ciclo de vida como actividades y fragmentos de Android, y realiza acciones específicas cuando se invocan estos eventos del ciclo de vida. NavigationView ejecuta varias inicializaciones en NavigationView#onCreate y NavigationView#onStart, y limpiezas en NavigationView#onStop y NavigationView#onDestroy, así como cuando se procesan otros eventos del ciclo de vida.

Los métodos de ciclo de vida de NavigationView tienen el mismo significado que para las actividades o fragmentos de Android. Por ejemplo, onCreate() de NavigationView se traduce de manera aproximada y debe invocarse mediante devoluciones de llamada de ciclo de vida desde la actividad o el fragmento de Android. Dado que las devoluciones de llamada del ciclo de vida de NavigationView se basan y se invocan en el mismo orden que las devoluciones de llamada de ciclo de vida de Android, se requiere un orden estricto de estos métodos de NavigationView. De lo contrario, es posible que experimentes fugas de memoria, errores de IU, que no se actualice la ubicación y otros problemas.

Para obtener más información sobre el ciclo de vida de la actividad de Android, consulta la sección Conceptos del ciclo de vida de la actividad en la documentación para desarrolladores de Android.

En la siguiente tabla, se muestra cuándo deben invocarse otros métodos de ciclo de vida, después de los métodos de ciclo de vida especificados:

Método de ciclo de vida Se invoca en qué parte del ciclo de vida de la actividad. Se invoca después de qué método de ciclo de vida
onConfigurationChanged() Se invoca cuando la IU está en primer plano y cambia la configuración. Siempre después de onStart()
onTrimMemory() Se invoca cuando una actividad está en segundo plano. Siempre después de onPause()
onSaveInstance() Se invoca antes de que se destruya una actividad. Siempre después de onStop()

No llames a estos métodos de ciclo de vida varias veces sin llamar primero al método de cierre correspondiente. Además, ten en cuenta que, si la app misma administra algunas de estas devoluciones de llamada del ciclo de vida de Android y se agrega NavigationView al fragmento después de la creación o el inicio, la app debe llamar a los métodos específicos en el orden correcto para inicializar correctamente el SDK de Navigation.

Para obtener más orientación sobre el uso de estos métodos, consulta la app de demostración del SDK de Navigation.

Si usas NavigationView, invoca los eventos de ciclo de vida desde la actividad o el fragmento, no desde ambos.

Para mantener el orden estricto de los métodos de ciclo de vida, invoca estos eventos desde las devoluciones de llamada del ciclo de vida de la actividad o del fragmento, que reciben estos eventos en orden. Este enfoque garantiza que las apps no necesiten coordinarse entre fragmentos y actividades, y que no generen llamadas duplicadas.