В чем разница между 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(), и он не имеет других данных.