Жизненый цикл активностей
Не буду рассписывать почему и как, формулировка вопроса такова: есть две активности A и B, почему после интента активности A в активность B, активность проходит круг : onPause - onResume - onStop. По идеи должно же onPause - onStop - onDestroy... onResume, я так понимаю, должен отробатывать, когда я активность сворачиваю, а не когда я ухожу из нее полностью Код мало, что даст, но на всякий:
public void onClickClick(MenuItem item) {
//Navigation.findNavController(item.getActionView()).navigate(R.id.nav_home);
if (item.getItemId() == R.id.exit_to_auth) {
StateApp.setAuthUser(false);
System.out.println("Кнопка выход, boolean перед выходом = " + StateApp.isAuthUser());
startActivity(new Intent(MainActivity.this, AuthenticationActivity.class));
}
}
@Override
protected void onPause() { // так правильно, но я не могу понять, почему onPause ,а не onStop
super.onPause();
loadState();
}
void loadState(){
// Авторизирован ли пользователь?
System.out.println("onStop() , boolean перед выходом ( первая ) = " + StateApp.isAuthUser() );
sharedPreferences = getSharedPreferences(StateApp.getAppPreferences(),Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(StateApp.getAppPreferencesAuthBooleanCounter(),StateApp.isAuthUser());
editor.apply();
System.out.println("onStop() , boolean перед выходом = " + StateApp.isAuthUser() );
Ответы (2 шт):
Вызов A.onPause означает, что A теряет фокус и переходит в состояние Paused. Затем создается (onCreate), отображается (onStart) и получает фокус (onResume) B. Затем перестает быть видно (onStop) A. Обратите внимание, что не вызывается onDestroy для A, а значит, оно не уничтожается. A остается в памяти, в состоянии Stopped. А B – находится в состоянии Resumed. Его видно и оно в фокусе, с ним можно взаимодействовать.
Здесь более подробно можно почитать про работу ЖЦ Активити.
Ответ Сергея верен, но если мы используем динамический фрагмент ( как собственно мой, то действовать надо по другому
Ответ Сергея объяснил, почему у меня вызывался onResume(), и действительно, он прав, но при выходе из фрагмента, нужно реализовывать метод onDestroyView(), если мы используем динамический фрагмент