В Android, если OS убивает мое приложение, getIntent() вернет намерение с теми же дополнениями?

После того, как мое приложение было восстановлено, конечно.

или мне нужно хранить все на onSaveInstanceState()?

Ответы

Ответ 1

Этот разговор, кажется, отвечает на него: http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2. Ищите сообщение, начинающееся с "Да и нет" и несколько перед ним.

Ответ положительный: да, после перезапуска операции, отключенной ОС, getIntent() вернет Intent с теми же дополнениями, что и оригинал.

Тем не менее, если какой-нибудь Android-эксперт может подтвердить, я был бы рад услышать это.:)

Ответ 2

Sobear,

Ответ на это "нет, это не так". Для этого существует несколько разных причин. Во-первых, позвольте переосмыслить, как работает действие (я знаю, что вы это знаете, но я иллюстрирую точку).

  • Чтобы запустить Activity, создается Intent. Это намерение может быть из значка приложения на главном экране, из компонента вашего приложения, которое в настоящее время выполняется, или даже из другого компонента другого приложения, если у него есть разрешение на его запуск.

  • Intent отправляется на Android, и Android пытается разрешить его, отправив его в приложение или запросив пользователя, если он не может решить сам по себе.

  • Когда приложение запускается, оно удерживается в намерении, которое запустило его для проверки безопасности, отслеживания обратного пути и т.д. Это позволяет разработчику и пользователю убедиться, что это то, что они действительно хотят сделать.. Это намерение сохраняется на протяжении всего жизненного цикла Деятельности и всего остального, что Activity передает ей.

  • Пользователь делает некоторые вещи, отвлекается и переходит на другие действия. Приложение все еще продолжается до тех пор, пока память не станет низкой.

  • Память падает, а Android убивает активность. Действие теряет намерение (если оно не было каким-то образом сохранено).

  • Пользователь видит, что активность умерла и решает перезапустить. Android создает новый Intent для запуска Activity → вернуться к шагу 1.

Поскольку для перезапуска приложения потребовалось новое намерение, старое намерение больше не привязано к Activity. Что касается того, собирается ли он в Мусор, я не уверен, когда это произойдет, но оно недоступно. Если вы сохраняете свои дополнительные функции, это только один способ сделать это (конечно, несколько возможных реализаций). Намерения и дополнения должны быть каким-то образом сохранены. Это не повлияет на функцию getIntent(), но вы можете создать персональную функцию getOriginalIntent(), чтобы основать ее. Оттуда есть несколько вариантов... Например, вы можете перезапустить Activity с оригинальным намерением, а THEN getIntent() будет работать...

FuzzicalLogic

Ответ 3

Хорошо, вы всегда можете сделать простой эксперимент самостоятельно, указав поворот флажка "не продолжать" в, в настройках разработчика.

Если этот флаг включен, всякий раз, когда вы выходите из приложения (например, нажмите кнопку "домой" ), ОС будет убивать активность, а когда вы вернетесь в свое приложение, предыдущая активность будет воссоздана.

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