Multi-Window: суть, режимы многозадачности на Android

Автор: IT Sectr Опубликовано: 2026-06-08 Время чтения: 10 мин

Multi-Window — это набор режимов многозадачности в Android, позволяющий запускать несколько приложений на экране одновременно. Система включает три режима: Split Screen для разделения экрана на две части, Picture-in-Picture для видео в мини-окне и Freeform для окон произвольного размера на больших экранах. По данным Android Developers (2025), поддержка Multi-Window обязательна для устройств с шириной экрана 600 dp и больше, и каждый разработчик должен адаптировать приложение к возможным изменениям размеров окна.

Главное

  • Multi-Window — система многозадачности Android с тремя режимами: Split Screen, PiP, Freeform.
  • Split Screen — два приложения рядом, разделитель перетаскивается, пропорции меняются.
  • Picture-in-Picture — видео в мини-окне поверх других приложений.
  • Freeform — окна произвольного размера на Android TV и больших экранах.
  • ResizeableActivity — флаг в манифесте для объявления поддержки многооконного режима.

Что такое Multi-Window в Android?

Multi-Window — это функция Android, введённая в версии 7.0 Nougat (API 24), которая позволяет запускать два и более приложения на экране одновременно. Режим стал ответом Google на растущую популярность планшетов и крупноэкранных устройств, где однозадачный режим ограничивает продуктивность.

До Android 7.0 каждое приложение занимало весь экран — при переключении между приложениями предыдущее сворачивалось. Multi-Window изменил эту модель: теперь приложение может занимать часть экрана, сохраняя активное состояние. Для разработчика это означает, что onConfigurationChanged и обработка изменения размеров становятся обязательными.

На Android 12L (2022) Google сделал Multi-Window режимом по умолчанию для устройств с большим экраном — все приложения на планшетах запускаются в режиме, допускающем многооконность. Исключение — только приложения с явным запретом в манифесте.

Режимы Multi-Window: Split Screen, PiP, Freeform

Split Screen — самый распространённый режим. Экран делится на две части по горизонтали или вертикали, пользователь перетаскивает разделитель. Доступен на телефонах и планшетах. Запускается через Overview (Recents) — перетаскиванием иконки приложения к верхнему или нижнему краю.

Picture-in-Picture (PiP) — режим для видео- и навигационных приложений. Контент отображается в плавающем мини-окне (примерно 15–25% экрана), которое можно перемещать. Доступен на Android 8.0+. Для активации используется enterPictureInPictureMode() в Activity.

Freeform — режим окон произвольного размера, похожий на десктопные оконные менеджеры. Доступен на Android TV и некоторых крупноэкранных устройствах производителей (Samsung DeX). Приложения запускаются в окнах с заголовком и кнопками управления.

Как работает Multi-Window

Когда пользователь активирует Multi-Window, Android создаёт новый экземпляр Activity для каждого приложения и распределяет доступное пространство экрана. Активности размещаются в отдельных Task, но используют один и тот же StackView с разделителем между ними.

Система уведомляет каждую Activity об изменении размера через onConfigurationChanged(). Если Activity не обрабатывает это событие — она пересоздаётся (recreate). Для Split Screen ширина окна может уменьшиться до 220 dp — минимальной ширины, поддерживаемой платформой.

Android позволяет приложению объявить минимальную ширину через android:minWidth и android:minHeight в манифесте. Если доступное пространство меньше указанных значений — Activity переходит в паузу.

Адаптация Activity к многооконному режиму

Для поддержки Multi-Window необходимо установить флаг android:resizeableActivity="true" в манифесте. Это означает, что приложение может менять размер при изменении окна. По умолчанию на Android 12L+ все приложения считаются resizeable — флаг игнорируется.

При изменении размера окна Activity может пересоздаться (по умолчанию) или обработать событие в onConfigurationChanged, если в манифесте указаны configChanges="screenSize|smallestScreenSize". Рекомендуется указывать configChanges для ключевых Activity, чтобы избежать потери состояния.

xml
<activity
    android:name=".MainActivity"
    android:resizeableActivity="true"
    android:configChanges="screenSize|smallestScreenSize|orientation" />

Для приложений, которые не поддерживают изменение размера, Android показывает диалоговое окно с предупреждением. В этом случае при переключении в мультиоконный режим система может завершить Activity и показать snackbar с предложением перезапустить.

Multi-Window и жизненный цикл Activity

Multi-Window изменяет стандартный жизненный цикл Activity. Когда другое приложение становится активным в соседнем окне, текущее Activity получает вызов onPause(), но не onStop() — оно остаётся видимым, хотя и не в фокусе. Это важно: видеоплеер должен продолжить воспроизведение на onPause, а не на onStop.

Разработчику нужно различать состояния: onPause + isInMultiWindowMode() = true означает только потерю фокуса, а не уход с экрана. Для видео и анимаций это сигнал не останавливать воспроизведение, а только снять выделение с элементов управления.

При выходе из Multi-Window onMultiWindowModeChanged() вызывается до onResume(). Это даёт возможность перестроить интерфейс под полноэкранный режим до того, как пользователь начнёт взаимодействие.

Лучшие практики для Multi-Window

Первое правило — сохранять состояние. В мультиоконном режиме Activity может быть пересоздана в любой момент. Используйте SavedStateHandle в ViewModel или onSaveInstanceState для всех данных, которые должны сохраняться между изменениями конфигурации.

Второе — тестировать на минимальной ширине 220 dp. Это значение считается самым узким окном в Split Screen. Интерфейс должен оставаться читаемым и функциональным. Если какие-то элементы выходят за границы — используйте Window Size Class для переключения между лейаутами.

Третье — отключать функциональность, которая не работает в Multi-Window. Например, Camera может быть недоступна, если экран слишком мал. Проверяйте isInMultiWindowMode() перед запуском камеры или других полноэкранных функций.

Часто задаваемые вопросы

Как запретить Multi-Window для своего приложения?

Установите android:resizeableActivity="false" в манифесте. На Android 12L+ флаг игнорируется для девайсов с большим экраном, поэтому для полного запрета используйте android:maxAspectRatio.

Как определить, что приложение находится в Multi-Window?

Вызовите isInMultiWindowMode() из Activity. Метод возвращает true, если приложение работает в Split Screen, PiP или Freeform. Также можно подписаться на onMultiWindowModeChanged().

Работает ли Multi-Window на Android TV?

На Android TV доступен только режим Picture-in-Picture. Split Screen и Freeform не поддерживаются — телевизоры используют один главный экран с PiP-окном в углу.

Что происходит с foreground-сервисом в Multi-Window?

Foreground-сервис продолжает работу независимо от режима. Но если приложение переходит в PiP, система может временно приостановить выполнение для экономии ресурсов.

Как обрабатывать перетаскивание (Drag and Drop) между окнами?

Android поддерживает Drag and Drop между окнами в Multi-Window через ClipData и View.OnDragListener. Данные передаются через ContentProvider или Intent с FLAG_GRANT_READ_URI_PERMISSION.

Итоги

  • Multi-Window — многозадачность Android с тремя режимами для одновременной работы приложений.
  • Split Screen — разделение экрана на две части с перетаскиваемым разделителем.
  • Picture-in-Picture — видео в мини-окне для Android 8.0+.
  • Freeform — окна произвольного размера на Android TV и Samsung DeX.
  • resizeableActivity — обязательный флаг в манифесте для поддержки режима.
  • onMultiWindowModeChanged — колбэк для перестройки интерфейса при входе/выходе.
  • Заключение — Multi-Window обязателен к поддержке для всех приложений на больших экранах с 2022 года.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также