[英]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.