После того, как мое приложение было восстановлено, конечно.
или мне нужно хранить все на onSaveInstanceState()?
После того, как мое приложение было восстановлено, конечно.
или мне нужно хранить все на onSaveInstanceState()?
Этот разговор, кажется, отвечает на него: http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2. Ищите сообщение, начинающееся с "Да и нет" и несколько перед ним.
Ответ положительный: да, после перезапуска операции, отключенной ОС, getIntent() вернет Intent с теми же дополнениями, что и оригинал.
Тем не менее, если какой-нибудь Android-эксперт может подтвердить, я был бы рад услышать это.:)
Sobear,
Ответ на это "нет, это не так". Для этого существует несколько разных причин. Во-первых, позвольте переосмыслить, как работает действие (я знаю, что вы это знаете, но я иллюстрирую точку).
Чтобы запустить Activity, создается Intent. Это намерение может быть из значка приложения на главном экране, из компонента вашего приложения, которое в настоящее время выполняется, или даже из другого компонента другого приложения, если у него есть разрешение на его запуск.
Intent отправляется на Android, и Android пытается разрешить его, отправив его в приложение или запросив пользователя, если он не может решить сам по себе.
Когда приложение запускается, оно удерживается в намерении, которое запустило его для проверки безопасности, отслеживания обратного пути и т.д. Это позволяет разработчику и пользователю убедиться, что это то, что они действительно хотят сделать.. Это намерение сохраняется на протяжении всего жизненного цикла Деятельности и всего остального, что Activity передает ей.
Пользователь делает некоторые вещи, отвлекается и переходит на другие действия. Приложение все еще продолжается до тех пор, пока память не станет низкой.
Память падает, а Android убивает активность. Действие теряет намерение (если оно не было каким-то образом сохранено).
Пользователь видит, что активность умерла и решает перезапустить. Android создает новый Intent для запуска Activity → вернуться к шагу 1.
Поскольку для перезапуска приложения потребовалось новое намерение, старое намерение больше не привязано к Activity. Что касается того, собирается ли он в Мусор, я не уверен, когда это произойдет, но оно недоступно. Если вы сохраняете свои дополнительные функции, это только один способ сделать это (конечно, несколько возможных реализаций). Намерения и дополнения должны быть каким-то образом сохранены. Это не повлияет на функцию getIntent(), но вы можете создать персональную функцию getOriginalIntent(), чтобы основать ее. Оттуда есть несколько вариантов... Например, вы можете перезапустить Activity с оригинальным намерением, а THEN getIntent() будет работать...
FuzzicalLogic
Хорошо, вы всегда можете сделать простой эксперимент самостоятельно, указав поворот флажка "не продолжать" в, в настройках разработчика.
Если этот флаг включен, всякий раз, когда вы выходите из приложения (например, нажмите кнопку "домой" ), ОС будет убивать активность, а когда вы вернетесь в свое приложение, предыдущая активность будет воссоздана.
Мои эксперименты сказали мне, что getIntent() всегда будет иметь те же данные после воссоздания активности.