Мультитаксинг Android

#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)

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