我遇到了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,这是否仍然意味着如果活动再次重新创建,我可以获得我的原始包? (我猜这个问题会根据其他答案回答自己)