强制调用 Android activity 的超类方法?

Mandatory calling superclass methods of an Android activity?

在一个activity的生命周期中,需要一直调用父class的方法吗? .我的意思是:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
}

public void onStart() {
    super.onStart();

 }



protected void onResume() {
    super.onResume();

}

protected void onPause() {
    super.onPause();


}



protected void onStop() {
    super.onStop();

}

protected void onDestroy() {
    super.onDestroy();

}

protected void onRestart() {
    super.onRestart();

}


public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

}


 public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

}

而且我总是必须先调用超级 class 方法吗?例如:

public void onSaveInstanceState(Bundle outState) {
    .....my code.......
    super.onSaveInstanceState(outState);

}


 public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
     .......my code...... 

}

在 onSaveInstanceState 方法上,先写我的代码,然后再写到 superclasss 方法更有意义,而在 onRestoreInstanceState 方法上相反?

谢谢

生命周期方法的文档指出是否需要调用 super.onXXX()。对于某些方法,这是必需的,对于某些方法则不是。

对于需要调用到 super.onXXX() 的生命周期方法,您可以随时调用该方法。它可以在您的代码之前或之后。

对于 onSaveInstanceState()onRestoreInstanceState(),在代码之前或之后调用 super.onXXX() 应该也没有区别。希望您放入已保存实例 Bundle 的内容不会与 Android 框架放入 Bundle 的内容冲突。如果有冲突,无论你在代码之前还是之后调用super方法都会有问题。

注意:Android 框架在将视图和对话框信息放入保存的实例时使用以下键 Bundle

 static final String FRAGMENTS_TAG = "android:fragments";
 private static final String WINDOW_HIERARCHY_TAG = "android:viewHierarchyState";
 private static final String SAVED_DIALOG_IDS_KEY = "android:savedDialogIds";
 private static final String SAVED_DIALOGS_TAG = "android:savedDialogs";
 private static final String SAVED_DIALOG_KEY_PREFIX = "android:dialog_";
 private static final String SAVED_DIALOG_ARGS_KEY_PREFIX = "android:dialog_args_";

所以只要不使用同名的key就可以了