为何在旋转安卓平板电脑时调用onCreate on Activity?

时间:2012-10-23 02:08:26

标签: android android-activity

每当旋转屏幕时,就会在Activity上调用

onCreate方法。是仅仅再次调用onCreate还是重新创建整个活动?

2 个答案:

答案 0 :(得分:8)

它不只是onCreate()。旋转屏幕时,暂停,停止和重新启动活动。有关详细信息,请参阅此问题: Activity lifecycle - onCreate called on every re-orientation

如果问题是“为什么会发生这种情况?”答案与Android的活动和窗口内的功能有关。更具体地说,android当前没有办法在方向改变时移动,调整大小和重新布局每个视图。为了使这种情况成为可能,实施了简单的实施,即仅仅拆除活动并将其恢复到不同的方向。

答案 1 :(得分:2)

当方向改变时,onDistroy方法将调用指示Activity关闭的方法,并再次使用新的高度和宽度创建新活动。

当方向改变时,Activity类中的所有对象都将被破坏,当Activity重新启动时它们将再次创建,如果有大量数据则需要更多时间再次加载所有数据..所以它更喜欢分离和将所有数据存储在Non-Activity类中,并通过创建NonActivity类的对象在Activity类中使用。

当方向改变onSaveInstanceState方法时也调用和
通过使用onSaveInstanceState,数据将在活动销毁并重新创建

时设置或存储一些值
    protected void onSaveInstanceState(Bundle icicle) {
      super.onSaveInstanceState(icicle);
      icicle.putLong("param", value);

    }

当活动再次重新启动on create方法调用时,这次Bundle将返回您在onSaveInstanceState中保存的值

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