Рубрики
Без рубрики

Android Упрощен. Жизненный цикл фрагмента

Введение В лучшие времена документация по Android может быть ошеломляющей и… Помечен как java, android, тристан.

Упрощенный Android (Серия из 3 частей)

Вступление

  • В лучшие времена документация по Android может быть ошеломляющей и запутанной, в худшие времена она очень ошеломляющая и очень запутанная. Эта серия надеется свести темы к минимуму и сделать их менее сложными. Для более глубокого понимания жизненного цикла фрагмента, пожалуйста, ознакомьтесь с документацией, которую можно найти ЗДЕСЬ .

Короткая заметка

  • Чтобы извлечь максимальную пользу из этого поста, я рекомендую вам иметь базовое представление о Фрагментах , Менеджер фрагментов и Транзакции фрагментов . Я также хочу еще раз подчеркнуть, что это очень упрощенная версия жизненного цикла фрагмента, поэтому, пожалуйста, ознакомьтесь с документацией ЗДЕСЬ если вы хотите более глубокого понимания.

Жизненный цикл фрагмента

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

1) ИНИЦИАЛИЗИРОВАННЫЙ 2) СОЗДАНО 3) НАЧАТО 4) ВОЗОБНОВЛЕНО 5) разрушенный

ИНИЦИАЛИЗИРОВАННЫЙ

  • когда создается экземпляр фрагмента, он начинается в состоянии ИНИЦИАЛИЗИРОВАН . Чтобы фрагмент затем прошел оставшуюся часть своего жизненного цикла, его необходимо добавить в FragmentManager . Менеджер фрагментов отвечает за определение того, в каком состоянии должен находиться фрагмент, а затем за его перемещение в это состояние. Как только фрагмент был добавлен в диспетчер фрагментов, вызывается обратный вызов onAttach(), чтобы прикрепить фрагмент к его активности хоста. Помните, что фрагменты не могут существовать сами по себе и должны размещаться либо действием, либо другим фрагментом.
ExampleFragment newFragment = new ExampleFragment();//INITIALIZED

        getSupportFragmentManager().beginTransaction()
                .setReorderingAllowed(true)
                .add(R.id.fragment_container_view, newFragment)
                .commit(); //onAttach() is called after commit()

  • Из приведенного выше примера кода: когда мы создаем пример экземпляра фрагмента(), фрагмент переходит в ИНИЦИАЛИЗИРОВАННОЕ состояние. Затем мы начинаем транзакцию фрагмента и добавляем новый фрагмент в FragmentManager. Как только транзакция завершена, вызывается функция onAttach(), и фрагмент готов к переходу в следующее состояние жизненного цикла.

созданный

  • После добавления фрагмента в FragmentManager и вызова метода onAttach() фрагмент переходит в состояние СОЗДАН . В этом состоянии вызываются обратные вызовы, такие как onCreate(), onCreateView() и onViewCreated(). Это состояние является подходящим местом для выполнения таких действий, как настройка адаптеров в RecyclerView. Это также время, когда представление фрагмента раздувается (создается)
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    // called after onAttach() and before onCreateView()
    // is used to reinitialize previously saved data

    }

   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
 // called after onCreate() but before onViewCreated()
// only used to manually inflate the fragment's View
// returns inflated view
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState){
 // any extra work that involves the fragment's view is done in 
// this method
}
  • Из приведенного выше кода: onCreate() вызывается сразу после onAttach() и перед двумя другими методами. Он используется для повторной инициализации ранее сохраненных данных из состояния savedInstanceState . onCreateView() вызывается после onCreate(), но до onViewCreated(). Именно в onCreateView() вы можете вручную увеличить представление с помощью класса LayoutInflater. onViewCreated() – это последний вызываемый метод, и именно в нем должна выполняться любая работа, связанная с представлением. параметр вида onViewCreated() – это увеличенный вид, возвращаемый из onCreateView().

  • Для большинства приложений для начинающих вам нужно только по-настоящему понять СОЗДАННОЕ состояние и методы, которые оно вызывает. Если вы зашли так далеко и не создали свое собственное приложение, я бы рекомендовал вам попробовать создать свое собственное и выпустить его в магазине Google Play. Это даст вам гораздо более глубокое понимание того, как на самом деле работает жизненный цикл.

начатый

  • Как только фрагмент переходит в это состояние, гарантируется, что вид фрагмента доступен. Кроме того, при вводе состояния НАЧАТО вызывается метод OnStart(). Также в этот момент фрагмент виден пользователю. метод OnStart() – хорошее место для начала рисования визуальных эффектов.
 @Override
    public void onStart() {
        super.onStart();
        Toast.makeText(getActivity(),"Now onStart() calls", Toast.LENGTH_LONG).show(); //onStart Called
    }
  • Из приведенного выше кода: мы можем вызвать метод OnStart() в любом классе, который расширяет класс Fragment. Если вы запустите этот код, вы должны получить тост с указанием: Теперь OnStart() вызывает . Ну, этот код мало что делает, он говорит нам, что наш фрагмент вошел в состояние НАЧАТО .

возобновленный

  • Это состояние вводится, когда фрагмент виден пользователю и все эффекты анимации и перехода завершены. Это состояние означает, что фрагмент теперь готов к взаимодействию с использованием. Это также состояние, которое запускает обратный вызов onResume().
@Override
    public void onResume() {
        super.onResume();
        Toast.makeText(getActivity(),"Now onResume() calls", Toast.LENGTH_LONG).show(); //onStart Called
    }

  • Из приведенного выше кода: мы можем использовать тот же код, что и метод OnStart(), но обратите внимание, какой тост появляется первым. Теперь вызовы OnStart() появятся первыми, за ними последует Теперь onResume() вызывает , который дает нам визуальное подтверждение изменения состояния. состояние переходит из НАЧАТОГО К возобновленный .

разрушенный

  • Если фрагмент удален из заднего стека или если Менеджер фрагментов уничтожен, жизненный цикл фрагмента переходит в состояние УНИЧТОЖЕН . В этом состоянии фрагмент затем вызывает обратный вызов onDestroy() и указывает, что фрагмент достиг конца своего жизненного цикла.
  • Для демонстрации обратного вызова onDestroy() вам потребуется создать более сложное приложение с несколькими фрагментами. но вы можете использовать приведенный ниже код и просто перемещаться по своему приложению и видеть, когда появится тост. Всплывающий тост будет означать уничтожение фрагмента.
public void onDestroy() {
        super.onDestroy();
        Toast.makeText(getActivity(),"Now onDestroy() calls", Toast.LENGTH_LONG).show(); //onStart Called
    }

  • Спасибо, что нашли время в свой день, чтобы прочитать этот мой пост в блоге. Если у вас есть какие-либо вопросы или проблемы, пожалуйста, прокомментируйте ниже или свяжитесь со мной по адресу Твиттер .

Упрощенный Android (Серия из 3 частей)

Оригинал: “https://dev.to/theplebdev/android-simplified-fragment-lifecycle-3j5a”