Ich bin auf 2 verschiedene Typen gestoßen, um meine Aktivität basierend auf einigen Parametern laufen zu lassen. Die erste ist savedInstanceState und der andere ist getIntent.getExtras()savedInstanceState vs getIntent(). GetExtras()
Q1) Also, was ich nicht verstehe, ist, wenn ich Bündel meiner Tätigkeit übergeben und dann beginnen, sollte es Habe das Bündel. Wenn die Aktivität aus irgendeinem Grund jedoch erneut erstellt wird, sollte das gleiche Bündel erneut verwendet werden. (habe ich recht?)
Q2) Basierend auf der Tatsache, dass Q1 wahr ist, und die Tatsache, dass ich nicht nur das Bündel überschreiben kann, sobald die Aktivität bereits begonnen hat, denke ich, wenn aus irgendeinem Grund in meinem bereits begonnen Aktivität, ich möchte einige Parameter des Bündels ändern, ich sollte einige Aktivitätsfelder erstellen und diese Felder in meinem Aktivitätsleben verwenden. Und überschreiben saveInstanseState, um die neuen Felder zu speichern, wenn aus irgendeinem Grund meine Aktivität neu erstellt würde. ist es wahr?
Q3) Basierend auf der Tatsache, dass alle oben wahr ist, in onCreate() sollte wie folgt jede Aktivität in Welt von Android starten müssen:
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) Angenommen onSaveInstanceState genannt wurde und gespeichert Werte, die sich vom ursprünglichen Bündel unterscheiden, das die Aktivität gestartet hat (getIntent.getExtras). Wenn die Aktivität erneut erstellt wird, bedeutet dies, dass sich saveInstanceState von getIntent.getExtras() unterscheidet oder sie jetzt identisch sind? (Wenn sie gleich sind, dann hat das If/Else auf dem obigen Code keine wahre Bedeutung, denn es ist dasselbe!).
Q5) Wenn ich nicht die onSaveInstanceState außer Kraft gesetzt habe, aber als ich die Aktivität erstellt Ich gebe es ein Bundle, bedeutet das immer noch, dass ich mein ursprüngliches Paket erhalten, wenn die Aktivität wieder neu? (Ich denke, diese Frage wird sich aufgrund anderer Antworten selbst beantworten)