Ответ 1
Согласно исходному коду Android, метод Activity.onCreate()
пересылает пакет saveInstanceState в фрагменты активности. Чтобы быть более конкретным, он выбирает разбор с ключом "android: fragments" и пересылает этот фрагмент с фрагментами, используя метод FragmentManager.restoreAllStates()
, который сам восстанавливает состояние на всех фрагментах.
Метод Activity.onRestoreInstanceState()
пересылает пакет в окно активности. Снова он извлекает пакет "android: viewHierarchyState" из сохраненного экземпляра и перенаправляет его в окно с помощью метода Window.restoreHierarchyState()
.
Итак, чтобы ответить на ваш вопрос, если ваша деятельность не использует Фрагменты, то вызов super.onCreate(null)
действительно ничего не изменит. Но, как наилучшая практика, я советую вам всегда перенаправить точный пакет savedInstance (если вы не знаете, что делаете).
Изменить: Вот примеры исходных кодов, о которых я говорил, взятых из AOSP v17:
protected void onCreate(Bundle savedInstanceState) {
// [... some content ellipsed for readability purposes]
if (savedInstanceState != null) {
Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
mFragments.restoreAllState(p, mLastNonConfigurationInstances != null
? mLastNonConfigurationInstances.fragments : null);
}
mFragments.dispatchCreate();
getApplication().dispatchActivityCreated(this, savedInstanceState);
mCalled = true;
}
// [...]
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if (mWindow != null) {
Bundle windowState = savedInstanceState.getBundle(WINDOW_HIERARCHY_TAG);
if (windowState != null) {
mWindow.restoreHierarchyState(windowState);
}
}
}