为什么和如何,我不会描述,问题的措辞如下:有两个活动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() );
调用A .onPause 意味着A失去焦点并进入 Paused 状态。然后 B 被创建 (onCreate)、渲染 (onStart) 并接收焦点 (onResume) B。然后它不再可见 (onStop) A。请注意,在A上没有调用 onDestroy ,这意味着它没有被销毁。A保留在内存中,处于 Stopped 状态。B处于Resumed状态。它是可见的并且在焦点上,您可以与之交互。
在这里,您可以了解更多关于 ACTIVITY 生活中心的工作。
Sergey 的回答是正确的,但是如果我们使用动态片段(比如我的,那么我们需要采取不同的行动
Sergey 的回答解释了为什么我调用了 onResume(),确实,他是对的,但是在离开片段时,如果我们使用动态片段,则需要实现 onDestroyView() 方法