屏幕旋转是否会导致 activity 在较新的 Android 版本上重新启动?

Does screen rotation make an activity restart on newer Android versions?

Android doc and some other Whosebug posts 之后,屏幕方向更改将导致 activity 重新启动(即,activity 将被销毁并重新创建)。但是,当我在不同的 Android 版本上对其进行测试时,行为似乎有所不同。

例如,假设我只是在 onCreate()onResume() 的开头分别打印出“onCreate”和“onResume”。

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   System.out.println("onCreate");
}

@Override
protected void onResume() {
   super.onResume();
   System.out.println("onResume");
}

当我在 Android 模拟器 运行 Android 10 和 11 上测试旋转时,旋转后没有任何输出。

但是在Android 7,轮换后输出“onCreate”和“onResume”。

所以屏幕方向的改变似乎不会在较新的 Android 版本上触发任何生命周期回调(顺便说一句,我没有设置 android:configChanges)?

但即使在 Android 文档中,我也没有看到任何指南提及此行为更改。有谁知道在哪里可以找到提到此更改的官方文档或特定代码提交?

原因是因为从Android9开始,用户在屏幕旋转时需要在导航栏中按下一个新的“旋转”按钮。如果你不按下它,activity 将不会被销毁并重新创建。请参阅此 doc 了解更多详情。