为什么在旋转android平板电脑时在Activity上调用onCreate?

为什么在旋转android平板电脑时在Activity上调用onCreate?,android,android-activity,Android,Android Activity,每当屏幕旋转时,每次在活动上调用onCreate方法。是再次调用onCreate还是重新创建整个活动?它不仅仅是onCreate()。旋转屏幕时,活动将暂停、停止和重新启动。有关更多信息,请参见此问题: 如果问题是“为什么会发生这种情况?”那么答案与Android活动和窗口内部的功能有关。更具体地说,当方向改变时,android目前没有移动、调整大小和重新显示每个视图的方法。为了使处理此场景成为可能,我们实现了一个更简单的实现,即拆下活动并以不同的方向将其恢复。当方向更改时,onDistroy

每当屏幕旋转时,每次在活动上调用onCreate方法。是再次调用onCreate还是重新创建整个活动?

它不仅仅是onCreate()。旋转屏幕时,活动将暂停、停止和重新启动。有关更多信息,请参见此问题:


如果问题是“为什么会发生这种情况?”那么答案与Android活动和窗口内部的功能有关。更具体地说,当方向改变时,android目前没有移动、调整大小和重新显示每个视图的方法。为了使处理此场景成为可能,我们实现了一个更简单的实现,即拆下活动并以不同的方向将其恢复。

当方向更改时,onDistroy方法将调用该方法,指示活动已关闭,并再次创建具有新高度和宽度的新活动

当方向更改时,“活动”类中的所有对象都将被销毁,当“活动重新启动”时,它们将再次创建,如果存在大量数据,则重新加载所有数据需要更多时间。。因此,它更倾向于通过向非活动类创建对象来分离和存储非活动类中的所有数据,并在活动类中使用

当方向在SaveInstanceState上更改时,也会调用和
通过使用onSaveInstanceState,当活动销毁和重新创建时,数据将设置或存储一些值

    protected void onSaveInstanceState(Bundle icicle) {
      super.onSaveInstanceState(icicle);
      icicle.putLong("param", value);

    }
当activity再次重新启动on create方法调用时,此捆绑包将返回保存在onSaveInstanceState中的值

public void onCreate(Bundle icicle) {
  if (icicle != null){
    value = icicle.getLong("param");
  }
}

谢谢你的回答。非主题问题:当屏幕方向改变时,如何在活动之间发送或保存数据?还有一个问题是,它不能存储在数据库或文件中,因为它有敏感数据。@jM2.me请看这个问题,如果您有新的特定问题,请随意发布新问题,以便使用onSaveInstanceState,我可以传递到因旋转而创建的新活动?我可以使用onSaveInstanceState将列表从旧活动传递到新活动吗?在将值添加到捆绑包之前,必须调用super.onSaveInstanceState(bundle)方法。哦,天哪,这毁了我的一天。我是android新手,我刚刚发现我需要编写大量的代码来实现屏幕旋转。非常非常糟糕