В чем разница между getIntent () и намерением от saveInstanceState? - PullRequest
14 голосов
/ 26 мая 2011

Привет всем, я пробую передачу намерений между двумя классами в Android, и я понял, что есть 2 способа передачи намерений,

Первый использует здесь метод getIntent:

Bundle extras = getIntent().getExtras();
mRowId = (extras != null) ? extras.getLong(DrugsDbAdapter.KEY_ROWID) : null;

И второй метод - доступ к saveInstanceState:

mRowId = (savedInstanceState != null) savedInstanceState.getLong(DrugsDbAdapter.KEY_ROWID) : null;

В обоих методах я пытаюсь получить доступ к RowId, который затем могу использовать для fetchData.В чем разница между обоими методами?Какой из них лучше?

Ответы [ 2 ]

12 голосов
/ 26 мая 2011

В первом случае вы получаете дополнительные сведения о намерении, с которого началось это действие, а во втором - при вызове onCreate во второй и более раз, например, при повороте устройства. Этот пакет должен быть заполнен в onSaveInstanceState.

11 голосов
/ 26 мая 2011

getIntent () используется, чтобы сказать вам, какой Intent начал это Activity. Он доступен в любом месте Activity. У него есть Bundle, но есть и другие метаданные.

onSaveInstanceState(Bundle) передает вам Bundle, чтобы сохранить переменные экземпляра в вашем приложении до следующего запуска. Этот Bundle входит только в onCreate() и onRestoreInstanceState(), и у него нет других данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...