перемещается ли объект между действиями? - PullRequest
1 голос
/ 06 июля 2011

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

Второй вопрос: если мой первый вопрос не имеет смысла, что вы мне посоветуете сделать?

Ответы [ 3 ]

1 голос
/ 06 июля 2011

Если вы посмотрите на жизненный цикл «Активность», то заметите, что, пока у вашего телефона достаточно памяти, ваше первое действие сохраняется в памяти, а вместе с ней и любой участник с данными, которые в нем содержатся.

Но если вашему телефону требуется память, он может убить любую активность, сохраняемую в фоновом режиме (любую активность, кроме той, которая отображается пользователю), что означает, что вы потеряете все данные, которые были в вашемпервое занятие

Чтобы знать, что произошло, имейте в виду, что метод onResume () всегда будет вызываться, когда ваша деятельность выводится на передний план (либо при создании, либо когда вы возвращаетесь к ней), но onCreate () будетвызываться только тогда, когда ваше приложение создано с нуля (то есть у вас нет сохраненных данных).

Вы должны использовать механизм связывания, чтобы сохранять данные, когда ваша деятельность приостановлена, и загружать их, когда вы возвращаетесь к ним.Прочтите параграф о Сохранение состояния активности в Android doc, чтобы узнать, как это использовать.

0 голосов
/ 06 июля 2011

В файле манифеста добавьте в упражнение следующее:

андроида: launchMode = "SingleTop"

В вашем примере, что происходит, когда вы возвращаетесь к упражнению, используя кнопку «Назад», вы выводите упражнение из стека. Когда вы переходите к действию внутри приложения, то создается НОВОЕ действие, в то время как оригинал все еще находится в стеке. Режим запуска singleTop выведет действие из стека, если оно есть, когда вы перейдете к нему в приложении, и создаст новое действие, только если его нет в стеке.

Без SingleTop каждый раз, когда вы запускаете действие в приложении, оно создает новый экземпляр, и вы обнаружите, что бывают случаи, когда вам приходится нажимать кнопку «Назад» на одном и том же действии более одного раза из-за нескольких экземпляров.

0 голосов
/ 06 июля 2011

Вы не гарантированно, что данные в памяти будут рядом, как только вы оставите Activity.Внимательно прочитайте эту часть руководства разработчика, чтобы понять жизненный цикл Activity: http://developer.android.com/guide/topics/fundamentals/activities.html

. Если вам необходимо сохранить информацию, вы должны переопределить onPause, onStop и / илиonDestroy методы вашей Деятельности.Затем вы можете сохранить свое состояние, используя SharedPreferences , базу данных SQLite или даже простой файл.

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