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

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

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

SupportNavigationFragment — это оболочка для удобства обработки обратных вызовов жизненного цикла NavigationView , поэтому вам не нужно управлять этими вызовами самостоятельно. Этот метод менее подвержен ошибкам и является предпочтительным способом использования Navigation в вашем приложении. При использовании 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 добавляется к фрагменту после создания или запуска, приложение должно вызывать эти методы самостоятельно в правильном порядке для корректной инициализации Navigation SDK.

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

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

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