2010-04-22 8 views
4

У меня есть следующий вопрос.Android: Восстановление активности Когда я нажимаю Home

У меня есть активность, которая показывает индикатор выполнения, пока служба загружает данные из API. Я хочу, чтобы, когда я нажимаю «Домой» и перезапускаю свою программу, активность, которая не является первым активным вызовом, но она находится в стеке, была восстановлена, чтобы продолжать показывать прогресс.

Я читал о цикле жизни деятельности, но я не нашел четкого решения.

То же самое происходит Если я нахожусь в активности, которая показывает индикатор выполнения, и я нажимаю кнопку, которая приводит меня к другому действию, когда я вернусь, могу ли я восстановить старую активность вместо запуска одного нового?

Кто-нибудь мне помогает?

Благодаря

ответ

3

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

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

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

+0

Активность по-прежнему существует, потому что служба отправляет данные на нее, поэтому я думаю, что ее можно восстановить – xger86x

+0

, действие будет существовать до тех пор, пока служба не будет завершена, и сборщик мусора может очистить активность. – Janusz

+0

нормально, поэтому пока служба все еще работает, если перезапустить мое приложение, могу ли я взять этот экземпляр активности в стеке? – xger86x