2015-01-12 3 views
4

Срок жизни объекта Intent для меня непонятен.Нужно ли сохранять объект Intent в onSaveInstanceState() для последующего использования?

Могу ли я всегда использовать свойства объекта Intent в течение всего срока действия Activity? Или мне нужно сохранить значения, переданные в Activity?

Я хочу использовать значения (действие и дополнительные) намерения, переданного Деянию, в течение всего срока действия Activity. Я не хочу копировать эти значения в переменные объекта Activity. Зачем мне, если я могу получить эти значения, вызывая 'getIntent()' из Intent, переданного Activity.

Мне интересно, когда активность уничтожена Android, потому что, чтобы освободить место в памяти, а затем снова восстановлена, объект Intent все еще существует вызовом getIntent()? Или мне нужно сохранить значения Intent в Bundle, переданные в Activity в onStateSaveInstanceState()?

Спасибо за ваш ответ

ответ

2

Время жизни намерения напрямую связаны с временем жизни вашей деятельности. Если действие уничтожено, намерение больше не доступно. Также намерение может быть перезаписано другим намерением - в зависимости от флагов, которые вы указали в манифесте для своей деятельности. Если вам действительно нужны данные о намерениях после уничтожения Действия, вам необходимо сохранить данные, то есть в ваших предпочтениях.

+0

Мне нужно намерение после того, как действие будет уничтожено и восстановлено снова, потому что, например, изменение конфигурации или освобождение памяти. Могу ли я затем вызвать getIntent(), чтобы получить исходные параметры активности? –

+0

Это зависит, например, если вы убили действие самостоятельно, оно было уничтожено, потому что вы перешли на другую деятельность или система убила его, чтобы освободить память. Хорошим примером для этого является здесь: http://stackoverflow.com/questions/14853327/intent-not-restored-correctly-after-activity-is-killed-if-clear-top-and-single-t Я бы рекомендовал не полагаться на getIntent(), если вам нужны эти данные настойчиво (как кажется из вашего объяснения), но чтобы сохранить его. – Carsten

+0

Что делать, если ситуация разрушена, потому что система освобождает память? –

Смежные вопросы