我知道当方向发生变化时会重新加载XML布局。但是Java代码也是吗?
或者一切都保持不变,只有OnSaveInstanceState
等被android系统调用?
答案 0 :(得分:1)
根据android文档,当屏幕旋转时,Android重新启动正在运行的Activity(调用onDestroy(),然后调用onCreate())。重新启动行为旨在通过使用与新设备配置匹配的备用资源自动重新加载应用程序来帮助您的应用程序适应新配置。
所以是的,java代码也会在方向更改期间重新加载。
要正确处理重新启动,您的活动必须通过正常的Activity生命周期恢复其先前的状态,在此生命周期中Android会在销毁活动之前调用onSaveInstanceState(),以便您可以保存有关应用程序状态的数据。然后,您可以在onCreate()或onRestoreInstanceState()期间恢复状态。
答案 1 :(得分:0)
当屏幕面向时,您将丢失数据,因为它将创建一个全新的活动,因此您必须使用onSaveInstanceState保存数据
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save UI state changes to the savedInstanceState.
savedInstanceState.putString("MyString", "Welcome back to Android");
// etc.
super.onSaveInstanceState(savedInstanceState);
}
//onRestoreInstanceState
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// This bundle has also been passed to onCreate.
String myString = savedInstanceState.getString("MyString");
}
答案 2 :(得分:0)
我认为你的意思是java代码重新加载是在旋转时调用onCreate和on resume方法的地方,答案是肯定的,你也可以使用savedInstancestate实例在旋转期间保存数据
答案 3 :(得分:0)
是的,基本上当您将方向更改为横向或纵向时,将再次调用MainActivity的OnCreate方法。包括初级化主要课程在内的所有内容都发生在这里。这是Android在改变移动设备方向时的行为。