Рекомендации по взаимодействию с навигационными картами

На этой странице изложены лучшие практики взаимодействия с картой навигации в вашем приложении.

По возможности используйте SupportNavigationFragment вместо NavigationView .

SupportNavigationFragment — это обертка для удобства обработки коллбэков жизненного цикла NavigationView , поэтому вам не нужно управлять этими коллбэками самостоятельно. Этот метод менее подвержен ошибкам и является предпочтительным способом использования навигации в вашем приложении. При использовании SupportNavigationFragment убедитесь, что вы не вызываете события жизненного цикла NavigationView .

При использовании NavigationView применяйте строгий порядок вызова методов жизненного цикла.

NavigationView содержит карту навигации и внимательно отслеживает события жизненного цикла, как и другие активности и фрагменты Android, выполняя определенные действия при возникновении этих событий. NavigationView выполняет множественную инициализацию в NavigationView#onCreate и NavigationView#onStart , а также очистку в NavigationView#onStop и NavigationView#onDestroy , а также при обработке других событий жизненного цикла.

Методы жизненного цикла NavigationView имеют то же значение, что и для Android-активностей или фрагментов. Например, onCreate() объекта NavigationView примерно соответствует и должен вызываться коллбэками жизненного цикла из Android-активности или фрагмента. Поскольку коллбэки жизненного цикла NavigationView основаны на том же порядке и вызываются в том же порядке, что и коллбэки жизненного цикла Android, требуется строгий порядок вызова этих методов NavigationView. В противном случае могут возникнуть утечки памяти , ошибки пользовательского интерфейса, не обновляемое местоположение и другие проблемы.

Для получения дополнительной информации о жизненном цикле активности Android см. раздел « Концепции жизненного цикла активности» в документации для разработчиков Android.

В следующей таблице показано, когда следует вызывать другие методы жизненного цикла после указанных методов жизненного цикла:

Метод жизненного цикла Место вызова в жизненном цикле активности Вызывается после какого метода жизненного цикла
onConfigurationChanged() Вызывается, когда пользовательский интерфейс находится на переднем плане и изменяется конфигурация. Всегда после onStart()
onTrimMemory() Вызывается, когда какое-либо действие выполняется в фоновом режиме. Всегда после onPause()
onSaveInstance() Вызывается перед уничтожением активности. Всегда после onStop()

Не вызывайте эти методы жизненного цикла несколько раз, не вызвав предварительно соответствующий метод закрытия. Кроме того, имейте в виду, что если некоторые из этих коллбэков жизненного цикла Android управляются самим приложением, и NavigationView добавляется во фрагмент после создания или запуска, приложение должно вызывать соответствующие методы в правильном порядке, чтобы корректно инициализировать SDK навигации.

Дополнительные инструкции по использованию этих методов см. в демонстрационном приложении Navigation SDK .

При использовании NavigationView события жизненного цикла следует вызывать либо из активности, либо из фрагмента, но не из обоих одновременно.

Чтобы сохранить строгий порядок вызовов методов жизненного цикла, эти события следует вызывать либо из коллбэков жизненного цикла активности, либо из коллбэков фрагмента, которые получают эти события в указанном порядке. Такой подход гарантирует, что приложениям не потребуется координировать действия между фрагментами и активностями, что предотвратит дублирование вызовов.