В чем разница между getIntent() и получением намерения от savedInstanceState?
Привет всем Я пробовал андроидную передачу намерений между 2 классами, и я понял, что есть два метода для передачи намерений,
Первый использует метод getIntent здесь:
Bundle extras = getIntent().getExtras();
mRowId = (extras != null) ? extras.getLong(DrugsDbAdapter.KEY_ROWID) : null;
И второй метод - доступ к сохраненному состоянию:
mRowId = (savedInstanceState != null) savedInstanceState.getLong(DrugsDbAdapter.KEY_ROWID) : null;
В обоих методах я пытаюсь получить доступ к RowId, который затем я могу использовать для fetchData. В чем разница между обоими методами? Какой из них лучше?
Ответы
Ответ 1
В первом случае вы получаете дополнительные функции, которые начали эту операцию, а вторая используется, когда onCreate
вызывается 2-е и более раз, например, на устройстве вращаются. Этот пакет должен быть заполнен в onSaveInstanceState
.
Ответ 2
getIntent() используется, чтобы сообщить вам, какой Intent
начал этот Activity
. Он доступен в любом месте Activity
. Он имеет Bundle
, но он также имеет другие метаданные.
onSaveInstanceState(Bundle)
передает вам Bundle
, чтобы сохранить переменные экземпляра в вашем приложении до следующего запуска. Этот Bundle
доступен только onCreate()
и onRestoreInstanceState()
, и он не имеет других данных.