方向发生变化时,将调用哪种活动方法?

| 当方向发生变化时,将调用生命周期的哪种方法? 我的应用程序执行
onResume()
方法或重新加载整个活动,因为我已经设置了一个布尔值来检查它是否第一次运行。方向发生变化时,我已经读过“ѭ1”,这是真的吗? 如何处理呢?     
已邀请:
        有趣的一个... 活动是从“ 0”开始的,默认情况下您在XML中声明。 正如我从堆栈溢出问题的答案中发现的那样: 方向改变 onSaveInstanceState 暂停 onStop onCreate onStart onRestoreInstanceState onResume 切换到活动2 onSaveInstanceState 暂停 活动2期间的方向改变 onStop onCreate onStart 从Activity2切回 onResume 我猜是因为活动1在旋转时被隐藏了,所以没有调用“ 3”是因为没有“视图”(即,它不能被查看/查看)。同样,完全有可能有2个完全不同的纵向/横向布局文件,这些布局文件可能具有具有不同ID的不同UI元素。 结果,我想说的是,如果您想使用
onSaveInstanceState
中的捆绑包保存自己的数据,那么您需要在
onCreate
中添加额外的逻辑(在活动1中)以在那里处理您自己的数据(以及它有条件地在
onRestoreInstanceState
中)。 特别是,您可以维护一个“最后一个已知”方向字段,以便
onCreate
知道它需要处理您自己的数据,因为方向已更改,而不是依赖于调用
onRestoreInstanceState
。     
        
public class MainActivity extends AppCompatActivity {
private final static String TAG = \"AppActivity\";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, \"onCreate(Bundle) called\");
    setContentView(R.layout.activity_main);
}

@Override
public void onStart() {
    super.onStart();
    Log.d(TAG, \"onStart() called\");
}

@Override
public void onPause() {
    super.onPause();
    Log.d(TAG, \"onPause() called\");
}

@Override
public void onResume() {
    super.onResume();
    Log.d(TAG, \"onResume() called\");
}

@Override
public void onStop() {
    super.onStop();
    Log.d(TAG, \"onStop() called\");
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.d(TAG, \"onDestroy() called\");
}
} 1)尝试在手机和/或仿真器上运行您的应用程序,然后打开Logcat =>在窗口顶部,选择Verbose。 2)现在尝试更改屏幕方向(例如,从纵向=>横向模式)。 我希望这种替代方法可以使您对活动生命周期有更多的了解。     

要回复问题请先登录注册