簡體   English   中英

可以在onCreate()完成之前調用SaveInstanceState嗎?

[英]Can SaveInstanceState be called before onCreate() was finished?

如果這是一個愚蠢的問題,我很抱歉,我在生產中只有一個怪異的行為,如果以某種方式調用了onSaveInstanceState但沒有調用onCreate (或者至少沒有完成執行),則可以解釋。

這是代碼:

private LaunchedFrom launchedFrom = null; 

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // some members initialization

  if (savedInstanceState == null) {
    Intent intent = getIntent();
    launchedFrom = handleIntentAction(intent);
  } else {
    // Restoring saved state.
  launchedFrom = LaunchedFrom.fromEvent(savedInstanceState.getString(BundleParams.KEY_LAUNCHED_FROM));
  }
}

protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  outState.putString(BundleParams.KEY_LAUNCHED_FROM, launchedFrom.getEvent());
}

private LaunchedFrom handleIntentAction(Intent intent) {
  LaunchedFrom launchedFrom = LaunchedFrom.MAIN;
  if (intent != null) {
    // some logic to override launchedFrom
  }
  return launchedFrom;
}

有時(很少)我在onSaveInstanceState中獲得一個NPE,其null為onSaveInstanceState ..謝謝您的幫助。

根據文檔

void onRestoreInstanceState(捆綁的saveInstanceState)

在onStart()和onPostCreate(Bundle)之間調用此方法。

void onSaveInstanceState(Bundle outState)

如果調用,此方法將在onStop()之前發生。 無法保證它會在onPause()之前還是之后發生。

我希望這有幫助。 盡管未定義何時可以調用onSaveInstanceState()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM