На этой странице объясняются лучшие практики взаимодействия с навигационной картой в вашем приложении.
По возможности используйте 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
вызовите события жизненного цикла из активности или фрагмента, а не из обоих.
Чтобы сохранить строгий порядок методов жизненного цикла, вызывайте эти события из обратных вызовов жизненного цикла активности или фрагмента, которые получают эти события по порядку. Такой подход гарантирует, что приложениям не придётся координировать фрагменты и активности и вызывать дублирование вызовов.