2010-12-17 3 views
1

Я пытаюсь определить, как сохранить приложение в разных жизненных циклах Android, например, запускать другое приложение, переходить в режим сна и т. Д. Я понимаю состояния жизненного цикла и методы событий, которые я могу но я не уверен, как память обрабатывается в отношении того, к чему у меня уже были ссылки. Я хорошо знаю, что мое приложение может быть убито в любое время, если потребуется ОС, но как насчет отдельных ссылок? Вот несколько примеров сценариев: если мое приложение запущено и пользователь получает телефонный звонок, или пользователь запускает другое приложение, или телефон переходит в режим сна. Предполагая, что мое приложение не убито, могу ли я безопасно использовать свои ссылки или я получу случайные указатели на нуль? Я предполагаю, что это сводится к тому, что ... Android либо убивает, либо не убивает и приложение, или будет ли он восстанавливать некоторую память (где есть все еще действительные ссылки) из приложения, не убивая его?Управление памятью Android для жизненного цикла

ответ

2

В большинстве случаев, когда пользователь переключается на другое приложение или отвечает на него, приложение просто приостанавливается. Когда он вернется, будет вызван onResume(), и он продолжит свой путь без проблем. Ссылки и что-то должно быть в порядке. Тем не менее, рекомендуется отменить регистрацию слушателей и перерегистрировать их в onResume().

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

+0

Спасибо, это то, что мне нужно было знать. Хорошо знать о перерегистрации слушателей. – Jake

+0

Рад, что я мог помочь. Удачи с вашим приложением. – Computerish

2

По правде говоря, в большинстве случаев приложение не будет убито при кратковременном перерыве, например, вызове или электронной почте, но если вы хотите поддерживать эти ситуации, вы должны предварительно очистить или сохранить данные в onPause(). Когда приложение вернется, оно выполнит onResume().

Ссылки не исчезнут до тех пор, пока действие не будет уничтожено, не беспокойтесь о NPE в сценарии паузы -> возобновить, если вы не делаете что-то очень странное.

Если вы используете прослушиватели или GPS, вы должны отменить регистрацию во время onPause() и возобновить ее позже.

+0

Спасибо за ваш ответ. «Ответ» был присужден Компьютеристу, хотя, поскольку этот ответ пришел первым. – Jake

+0

Совершенно верно, надеюсь, что это помогло. – blindstuff

Смежные вопросы