#android #multitasking
#Android #многозадачность
Вопрос:
Я ищу краткую характеристику многозадачности Android. Я обнаружил, что когда вы сворачиваете приложение Android, оно завершается, и его процесс остается в фоновом режиме. Когда пользователь хочет повторно использовать свое приложение, этот процесс оживляет это приложение. Пользователь будет в том же состоянии, в котором он ушел (если во время работы с ним было достаточно памяти), или он будет загружен с нуля, потому что не было свободной оперативной памяти для другой работы, и Android вышел из этого процесса. Я прав? Везде есть статьи на 20 страниц и больше о мультитаксинге Android. Мне нужно знать ключевые моменты, потому что я запутался в таких длинных статьях.
Спасибо
Ответ №1:
Короткий ответ: Да. Если ваше приложение может работать в памяти, несмотря на то, что оно «закрыто», то оно останется в оперативной памяти, и обработка продолжится, когда вы снова нажмете на него. В противном случае он будет перезапущен, и вы получите onResume ().
Длинный ответ: Пожалуйста, просто ознакомьтесь с жизненным циклом действия:
Ответ №2:
Когда активность Android будет закрыта другими окнами, она перейдет в приостановленное состояние и будет вызван метод onPause
. Он также может быть уничтожен ОС, а затем onDestroy
будет вызван. У вас очень мало контроля над этим, и вы не можете ожидать, что ваше приложение вернется в то же состояние. Однако, когда активность снова выводится на передний план, в будут выполнены шаги onCreate
и onPause
. Эти методы могут быть использованы для восстановления его состояния.
Здесь вы можете найти красивые диаграммы, описывающие жизненный цикл активности. Аналогичный, но немного другой жизненный цикл применим к сервису.
http://developer.android.com/reference/android/app/Activity.html
Ответ №3:
Действия Android — это основные видимые экраны, которые пользователь видит во время работы приложения. Если вы закроете экран или переключитесь на другое приложение, текущая активность будет переведена в спящий режим, и вы сможете сохранить состояние с помощью
Activity.onSaveInstanceState (пакет bundle)
После того, как управление вашей деятельностью будет возвращено, вы сможете восстановить состояние с помощью
Activity.onRestoreInstanceState (пакет bundle)
Обратите внимание, что вам нужно быть осторожным, чтобы не сохранять какие-либо ссылки на контекст в действиях и связанных классах, поскольку действие и, следовательно, контекст изменились между приостановкой и возобновлением. Вместо этого вы всегда должны передавать текущее действие в качестве активного контекста, чтобы избежать исключений из недопустимого контекста.