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

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

Используйте 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 вызывайте события жизненного цикла из действия или фрагмента, а не из того и другого.

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