onCreate方法。是仅仅再次调用onCreate还是重新创建整个活动?
答案 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");
}
}