Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在方向更改期间,java代码是否也会重新加载?_Android - Fatal编程技术网

Android 在方向更改期间,java代码是否也会重新加载?

Android 在方向更改期间,java代码是否也会重新加载?,android,Android,我知道当方向改变时,XML布局会被重新加载。但是Java代码也一样吗 还是一切都保持不变,只有OnSaveInstanceState等被安卓系统调用?根据安卓文档,当屏幕旋转时,安卓会重新启动正在运行的活动,并调用OnStore,然后调用onCreate。重新启动行为旨在通过使用与新设备配置匹配的替代资源自动重新加载应用程序,帮助应用程序适应新配置 所以,是的,java代码在方向更改期间也会重新加载 为了正确处理重新启动,在正常的活动生命周期中,您的活动必须恢复其以前的状态,在正常的活动生命周期

我知道当方向改变时,XML布局会被重新加载。但是Java代码也一样吗


还是一切都保持不变,只有OnSaveInstanceState等被安卓系统调用?

根据安卓文档,当屏幕旋转时,安卓会重新启动正在运行的活动,并调用OnStore,然后调用onCreate。重新启动行为旨在通过使用与新设备配置匹配的替代资源自动重新加载应用程序,帮助应用程序适应新配置

所以,是的,java代码在方向更改期间也会重新加载


为了正确处理重新启动,在正常的活动生命周期中,您的活动必须恢复其以前的状态,在正常的活动生命周期中,Android在销毁您的活动之前调用SaveInstanceState,以便您可以保存有关应用程序状态的数据。然后,您可以在onCreate或onRestoreInstanceState期间恢复状态。

当屏幕定向时,您将丢失数据,因为它将创建一个全新的活动,因此您必须使用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");  
}

我假设您所说的java代码被重新加载是指在旋转时调用onCreate和on resume方法,答案是肯定的,您也可以使用savedInstancestate实例在旋转期间保留数据

是的,基本上当您将方向更改为横向或纵向时,将再次调用MainActivity的OnCreate方法。包括初始化主类在内的所有事情都发生在这里。这是安卓在改变移动/设备方向时的行为