Android - сохранение состояния активности при запуске новой активности - PullRequest
1 голос
/ 02 февраля 2011

В настоящее время я работаю с приложением, которое должно иметь следующее поведение: в одном из действий пользователь может выбирать различные элементы в списке.При этом он должен иметь возможность сделать снимок, сохранить его и вернуться к предыдущему занятию.

У меня возникает следующая проблема: когда пользователь возвращается к занятию после снятия снимка,прогресс (в основном, выбранные предметы) теряется.

Я пытался использовать android: launchMode = "singleInstance" (а также singleTask) и android: alwaysRetainTaskState = "true" в своей деятельности, чтобы сохранить ее текущее состояние (и оно прекрасно работает, когда пользователь покидает приложениесделать что-то еще, а потом вернуться к этому).Я попытался использовать намерение ACTION_IMAGE_CAPTURE с FLAG_ACTIVITY_NEW_TASK, чтобы имитировать то же поведение (где-то в моем воображении я думал, что это должно быть то же самое, что запускать работу с картинками с домашнего экрана), но безрезультатно.Я даже пытался запустить работу с картинками с помощью startActivityforResult, надеясь, что каким-то образом моя активность не будет потеряна, но безрезультатно.

Я знаю, что мог бы использовать Bundle saveInstanceState, чтобы вручную сохранить и восстановить состояниепереопределив onPause, onResume, Create (и т. д.), но на самом деле в пользовательских компонентах много данных, которые нелегко сериализуемы, поэтому я бы хотел этого избежать.

Ну, наверное, мой вопрос в том, как мне воспроизвести то же поведение, что и в атрибуте AlwaysRetainTaskState manifest?Или в любом случае легко сохранить состояние моей активности?Или что я делаю не так, упуская очевидное?

Спасибо большое!

1 Ответ

4 голосов
/ 02 февраля 2011

Я знаю, что мог бы использовать Bundle saveInstanceState, чтобы вручную сохранять и восстанавливать состояние, переопределяя onPause, onResume, Create (и т. Д.), Но на самом деле в пользовательских компонентах много данных, которые нелегко сериализировать,Я бы хотел этого избежать.

То, что вы хотели бы, не имеет большого значения.В любом случае этот код необходим для обработки изменений конфигурации (например, переключение с портретного на альбомное).Пожалуйста, используйте onSaveInstanceState() и onRestoreInstanceState(), затем отмените все остальные неуместные хаки, которые вы имели в предыдущем абзаце (например, singleInstance, alwaysRetainTaskState).

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