Multi-Window — скуп режима вишезадачности у Android-у који омогућава покретање више апликација истовремено на екрану. Систем укључује три режима: Split Screen за подјелу екрана на два дијела, Picture-in-Picture за видео у мини-прозору и Freeform за прозоре произвољне величине на великим екранима. Према Android Developers (2025), подршка за Multi-Window је обавезна за уређаје са ширином екрана 600 dp и више, и сваки програмер мора прилагодити апликацију могућим промјенама величине прозора.
Главно
Multi-Window — функција Android-а уведена у верзији 7.0 Nougat (API 24), која омогућава покретање двије или више апликација истовремено на екрану. Режим је постао одговор Google-а на растућу популарност таблета и уређаја са великим екраном, гдје једнорадни режим ограничава продуктивност.
Прије Android-а 7.0 свака апликација је заузимала цио екран — при преласку између апликација претходна се минимизирала. Multi-Window је промијенио овај модел: сада апликација може заузимати дио екрана, остајући активна. За програмера то значи да onConfigurationChanged и обрада промјена величине постају обавезни.
У Android-у 12L (2022) Google је учинио Multi-Window подразумијеваним режимом за уређаје са великим екраном — све апликације на таблетима се покрећу у режиму који дозвољава више прозора. Изузетак су само апликације са изричитом забраном у манифесту.
Split Screen — најраспрострањенији режим. Екран се дијели на два дијела хоризонтално или вертикално, корисник превлачи раздјељник. Доступан на телефонима и таблетима. Покреће се преко Overview (Recents) — превлачењем иконе апликације ка горњој или доњој ивици.
Picture-in-Picture (PiP) — режим за видео и навигационе апликације. Садржај се приказује у плутајућем мини-прозору (отприлике 15–25% екрана), који се може помјерати. Доступан на Android 8.0+. За активацију се користи enterPictureInPictureMode() у Activity.
Freeform — режим прозора произвољне величине, сличан десктоп менаџерима прозора. Доступан на Android TV и неким уређајима са великим екраном произвођача (Samsung DeX). Апликације се покрећу у прозорима са насловом и дугмадима за управљање.
Када корисник активира Multi-Window, Android креира нову инстанцу Activity за сваку апликацију и распоређује расположиви простор на екрану. Активности се смјештају у одвојене Task-ове, али користе исти StackView са раздјељником између њих.
Систем обавјештава сваку Activity о промјени величине кроз onConfigurationChanged(). Ако Activity не обрађује овај догађај — она се поново креира (recreate). За Split Screen ширина прозора може се смањити до 220 dp — минималне ширине коју платформа подржава.
Android омогућава апликацији да пријави минималну ширину кроз android:minWidth и android:minHeight у манифесту. Ако је расположиви простор мањи од наведених вриједности — Activity прелази у паузу.
За подршку Multi-Window-у потребно је поставити заставу android:resizeableActivity="true" у манифесту. То значи да апликација може мијењати величину при промјени прозора. Подразумијевано на Android 12L+ све апликације се сматрају resizeable — застава се игнорише.
При промјени величине прозора Activity се може поново креирати (подразумијевано) или обрадити догађај у onConfigurationChanged, ако су у манифесту наведене configChanges="screenSize|smallestScreenSize". Препоручује се навођење configChanges за кључне Activity, како би се избјегао губитак стања.
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
За апликације које не подржавају промјену величине, Android приказује дијалошки прозор са упозорењем. У овом случају при преласку у режим више прозора систем може завршити Activity и приказати snackbar са приједлогом да се поново покрене.
Multi-Window мијења стандардни животни циклус Activity. Када друга апликација постане активна у сусједном прозору, тренутна Activity добија позив onPause(), али не onStop() — остаје видљива, иако није у фокусу. Ово је важно: видео плејер треба да настави репродукцију на onPause, а не на onStop.
Програмер треба да разликује стања: onPause + isInMultiWindowMode() = true значи само губитак фокуса, а не одлазак са екрана. За видео и анимације ово је сигнал да не зауставља репродукцију, већ само да уклони ознаке са контролних елемената.
При изласку из Multi-Window-а onMultiWindowModeChanged() се позива прије onResume(). Ово даје могућност да се интерфејс преуреди за режим цијелог екрана прије него што корисник започне интеракцију.
Прво правило — чување стања. У режиму више прозора Activity се може поново креирати у било ком тренутку. Користите SavedStateHandle у ViewModel или onSaveInstanceState за све податке који треба да се сачувају између промјена конфигурације.
Друго — тестирање на минималној ширини од 220 dp. Ова вриједност се сматра најужим прозором у Split Screen-у. Интерфејс треба да остане читљив и функционалан. Ако неки елементи излазе из граница — користите Window Size Class за пребацивање између распореда.
Треће — искључивање функционалности која не ради у Multi-Window-у. На примјер, Camera може бити недоступна ако је екран премали. Провјеравајте isInMultiWindowMode() прије покретања камере или других функција преко цијелог екрана.
Често постављана питања
Поставите android:resizeableActivity="false" у манифесту. На Android 12L+ застава се игнорише за уређаје са великим екраном, па за потпуну забрану користите android:maxAspectRatio.
Позовите isInMultiWindowMode() из Activity. Метод враћа true ако апликација ради у Split Screen, PiP или Freeform. Такође се можете претплатити на onMultiWindowModeChanged().
На Android TV доступан је само режим Picture-in-Picture. Split Screen и Freeform нису подржани — телевизори користе један главни екран са PiP прозором у углу.
Foreground сервис наставља рад без обзира на режим. Али ако апликација пређе у PiP, систем може привремено зауставити извршење ради уштеде ресурса.
Android подржава Drag and Drop између прозора у Multi-Window-у кроз ClipData и View.OnDragListener. Подаци се преносе путем ContentProvider-а или Intent-а са FLAG_GRANT_READ_URI_PERMISSION.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође