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 del ciclo de vida de NavigationView, por lo que no necesitas administrar estas devoluciones de llamada por tu 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 del ciclo de vida de NavigationView.
Si usas NavigationView, usa un orden estricto cuando invoques métodos del 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 del ciclo de vida de NavigationView tienen el mismo significado que para las actividades o los fragmentos de Android. Por ejemplo, onCreate() de NavigationView se traduce aproximadamente a 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 en y se invocan en el mismo orden que las devoluciones de llamada del 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 se deben invocar otros métodos del ciclo de vida, después de los métodos del ciclo de vida especificados:
| Método del ciclo de vida | Se invoca en el ciclo de vida de la actividad | Se invoca después de qué método del 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 del ciclo de vida varias veces sin llamar primero al método de cierre correspondiente. Además, ten en cuenta que, si la app 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 eventos del ciclo de vida desde la actividad o el fragmento, no ambos
Para mantener el orden estricto de los métodos del ciclo de vida, invoca estos eventos desde las devoluciones de llamada del ciclo de vida de la actividad o el fragmento, que reciben estos eventos en orden. Este enfoque garantiza que las apps no necesiten coordinar entre fragmentos y actividades, y que no causen llamadas duplicadas.