我遇到了2種不同的類型,讓我的活動基於一些參數運行。第一個是savedInstanceState,另一個是getIntent.getExtras()savedInstanceState vs getIntent()。getExtras()
Q1) 所以我不明白的是,一旦我通過束我的活動,然後啓動它,它應該有捆綁。 但是,如果由於某種原因再次重新創建活動,它應該再次具有相同的包。 (我是對吧?)
Q2)基於Q1爲真的事實,以及事實上,我不能只是在活動已經開始時重寫包,我猜如果由於某種原因我已經開始活動,我想改變一些束的參數,我應該創建一些活動領域,並在我的活動生活中使用這些領域。 並重寫saveInstanseState來保存新的字段,如果由於某種原因我的活動將被重新創建。這是真的嗎?
Q3)基於這樣的事實,所有上述是真實的,在的onCreate()應在Android的世界每一個活動需要像這樣開頭:
if (savedInstanceState != null) {
mType = savedInstanceState.getInt("some_val1");
mCardId = savedInstanceState.getLong("some_val2");
mQuery = savedInstanceState.getString("some_val3");
mCategory = savedInstanceState.getLong("some_val4");;
} else {
mType = getIntent().getExtras().getInt("some_val1");
mCardId = getIntent().getExtras().getLong("some_val2");
mQuery = getIntent().getExtras().getString("some_val3");
mCategory = getIntent().getExtras().getString("some_val4");
}
Q4)假設的onSaveInstanceState被稱爲和保存值與開始活動的原始包(getIntent.getExtras)不同,如果再次重新創建活動,這是否意味着saveInstanceState與getIntent.getExtras()不同?或者它們現在相同? (如果它們是相同的,那麼上面的代碼中的if/else沒有真正的含義,因爲它是相同的!)。如果我沒有覆蓋onSaveInstanceState,但是當我創建活動時,我將它傳遞給一個Bundle,這是否仍然意味着如果活動再次重新創建,我可以獲得我的原始包? (我猜這個問題會根據其他答案回答自己)