屏幕旋转是否会导致 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 了解更多详情。
在 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 了解更多详情。