Поддерживать активность в приостановленном состоянии - Android - PullRequest
1 голос
/ 27 августа 2011

У меня есть приложение с 3 вкладками с одним действием на вкладку. Когда я переключаюсь между первыми двумя действиями, действие, которое идет в фоновый режим, переходит в состояние onPause(), в то время как новое становится активным и вызывается onResume(). Это хорошо, потому что оба действия имеют сложный интерфейс и рендеринг занимает 2-3 секунды, но когда они находятся в состоянии приостановлено , они быстро возобновляются.

Но когда я нажимаю на 3-ю вкладку, то поведение приложения другое, активность, переходящая в фоновый режим, полностью уничтожается (проходит onPause(), onStop() и onDestroy()).

Есть идеи, почему существует разница в поведении? Есть ли способ заставить действие оставаться в приостановленном состоянии, когда пользователь переключается на другое действие в приложении?

Спасибо Sten

Ответы [ 2 ]

4 голосов
/ 27 августа 2011

Это поведение может даже отличаться на другом устройстве или в любом другом контексте (другой объем доступной памяти и т. Д.).

У вас есть гарантия, что

  • onResume() вызывается, когда Activity выходит на передний план
  • onPause() вызывается, когда Activity идет в фоновом режиме,

и это единственная гарантия, которая у вас есть. (Подробнее о жизненном цикле Activity здесь ).

Таким образом, вы не можете делать абсолютно никаких предположений относительно вызова onStop() и onDestroy(). Они могут вызываться или не вызываться каждый раз, когда вы переходите с одной вкладки на другую, и ваше приложение должно уметь это обрабатывать.

1 голос
/ 27 августа 2011

Причина, по которой первое действие уничтожено, может быть вызвана нехваткой памяти кучи. Если Android не хватает памяти, это убивает фоновые действия. На это поведение не может повлиять разработчик, так как вся система будет тормозить и падать, если не будет достаточно памяти, чтобы поддерживать работу.

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