Multi-Window: istota, tryby wielozadaniowości na Androidzie

Autor: IT Sectr Opublikowano: 2026-06-08 Czas czytania: 10 min

Multi-Window — to zestaw trybów wielozadaniowości w Androidzie, umożliwiający uruchamianie kilku aplikacji jednocześnie na ekranie. System obejmuje trzy tryby: Split Screen do dzielenia ekranu na dwie części, Picture-in-Picture dla wideo w miniaturowym oknie oraz Freeform dla okien o dowolnym rozmiarze na dużych ekranach. Według danych Android Developers (2025), obsługa Multi-Window jest obowiązkowa dla urządzeń o szerokości ekranu 600 dp i więcej, a każdy programista musi dostosować aplikację do możliwych zmian rozmiaru okna.

Najważniejsze

  • Multi-Window — system wielozadaniowości Androida z trzema trybami: Split Screen, PiP, Freeform.
  • Split Screen — dwie aplikacje obok siebie, separator przeciągany, proporcje zmienne.
  • Picture-in-Picture — wideo w miniaturowym oknie nad innymi aplikacjami.
  • Freeform — okna o dowolnym rozmiarze na Android TV i dużych ekranach.
  • ResizeableActivity — flaga w manifeście do deklarowania obsługi trybu wielu okien.

Czym jest Multi-Window w Androidzie?

Multi-Window — to funkcja Androida wprowadzona w wersji 7.0 Nougat (API 24), która umożliwia uruchamianie dwóch lub więcej aplikacji jednocześnie na ekranie. Tryb ten stał się odpowiedzią Google na rosnącą popularność tabletów i urządzeń z dużym ekranem, gdzie tryb jednozadaniowy ogranicza produktywność.

Przed Androidem 7.0 każda aplikacja zajmowała cały ekran — przy przełączaniu między aplikacjami poprzednia była zwijana. Multi-Window zmienił ten model: teraz aplikacja może zajmować część ekranu, pozostając w stanie aktywnym. Dla programisty oznacza to, że onConfigurationChanged i obsługa zmian rozmiarów stają się obowiązkowe.

W Androidzie 12L (2022) Google uczynił Multi-Window trybem domyślnym dla urządzeń z dużym ekranem — wszystkie aplikacje na tabletach uruchamiają się w trybie dopuszczającym wielookienkowość. Wyjątkiem są tylko aplikacje z wyraźnym zakazem w manifeście.

Tryby Multi-Window: Split Screen, PiP, Freeform

Split Screen — najpopularniejszy tryb. Ekran dzieli się na dwie części w poziomie lub pionie, użytkownik przeciąga separator. Dostępny w telefonach i tabletach. Uruchamiany przez Overview (Recents) — przeciągnięcie ikony aplikacji do górnej lub dolnej krawędzi.

Picture-in-Picture (PiP) — tryb dla aplikacji wideo i nawigacyjnych. Treść wyświetlana jest w pływającym miniaturowym oknie (około 15–25% ekranu), które można przesuwać. Dostępny w Androidzie 8.0+. Do aktywacji używa się enterPictureInPictureMode() w Activity.

Freeform — tryb okien o dowolnym rozmiarze, podobny do desktopowych menedżerów okien. Dostępny na Android TV i niektórych urządzeniach z dużym ekranem producentów (Samsung DeX). Aplikacje uruchamiają się w oknach z nagłówkiem i przyciskami sterowania.

Jak działa Multi-Window

Gdy użytkownik aktywuje Multi-Window, Android tworzy nowy egzemplarz Activity dla każdej aplikacji i rozdziela dostępne miejsce na ekranie. Aktywności umieszczane są w osobnych zadaniach (Task), ale korzystają z tego samego StackView z separatorem między nimi.

System powiadamia każdą Activity o zmianie rozmiaru przez onConfigurationChanged(). Jeśli Activity nie obsługuje tego zdarzenia — jest odtwarzana (recreate). Dla Split Screen szerokość okna może zmniejszyć się do 220 dp — minimalnej szerokości obsługiwanej przez platformę.

Android umożliwia aplikacji zadeklarowanie minimalnej szerokości przez android:minWidth i android:minHeight w manifeście. Jeśli dostępne miejsce jest mniejsze niż podane wartości — Activity przechodzi w stan wstrzymania.

Dostosowanie Activity do trybu wielu okien

Aby obsługiwać Multi-Window, należy ustawić flagę android:resizeableActivity="true" w manifeście. Oznacza to, że aplikacja może zmieniać rozmiar przy zmianie okna. Domyślnie w Androidzie 12L+ wszystkie aplikacje są uznawane za resizeable — flaga jest ignorowana.

Przy zmianie rozmiaru okna Activity może być odtworzona (domyślnie) lub obsłużyć zdarzenie w onConfigurationChanged, jeśli w manifeście podano configChanges="screenSize|smallestScreenSize". Zaleca się podawanie configChanges dla kluczowych Activity, aby uniknąć utraty stanu.

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

Dla aplikacji, które nie obsługują zmiany rozmiaru, Android wyświetla okno dialogowe z ostrzeżeniem. W tym przypadku przy przełączaniu do trybu wielookienkowego system może zakończyć Activity i pokazać snackbar z propozycją ponownego uruchomienia.

Multi-Window a cykl życia Activity

Multi-Window zmienia standardowy cykl życia Activity. Gdy inna aplikacja staje się aktywna w sąsiednim oknie, bieżąca Activity otrzymuje wywołanie onPause(), ale nie onStop() — pozostaje widoczna, choć nie w fokusie. To ważne: odtwarzacz wideo powinien kontynuować odtwarzanie po onPause, a nie po onStop.

Programista musi rozróżniać stany: onPause + isInMultiWindowMode() = true oznacza tylko utratę fokusu, a nie zejście z ekranu. Dla wideo i animacji to sygnał, aby nie zatrzymywać odtwarzania, a jedynie zdjąć podświetlenie z elementów sterowania.

Przy wyjściu z Multi-Window onMultiWindowModeChanged() jest wywoływane przed onResume(). Daje to możliwość przebudowania interfejsu do trybu pełnoekranowego, zanim użytkownik rozpocznie interakcję.

Najlepsze praktyki dla Multi-Window

Pierwsza zasada — zachowywać stan. W trybie wielookienkowym Activity może być odtworzona w dowolnym momencie. Używaj SavedStateHandle w ViewModel lub onSaveInstanceState dla wszystkich danych, które muszą być zachowane między zmianami konfiguracji.

Druga — testować na minimalnej szerokości 220 dp. Ta wartość jest uznawana za najwęższe okno w Split Screen. Interfejs musi pozostać czytelny i funkcjonalny. Jeśli jakieś elementy wychodzą poza granice — używaj Window Size Class do przełączania między układami.

Trzecia — wyłączać funkcjonalność, która nie działa w Multi-Window. Na przykład Camera może być niedostępna, jeśli ekran jest zbyt mały. Sprawdzaj isInMultiWindowMode() przed uruchomieniem kamery lub innych funkcji pełnoekranowych.

Często zadawane pytania

Jak wyłączyć Multi-Window dla swojej aplikacji?

Ustaw android:resizeableActivity="false" w manifeście. W Androidzie 12L+ flaga jest ignorowana dla urządzeń z dużym ekranem, dlatego do całkowitego wyłączenia użyj android:maxAspectRatio.

Jak sprawdzić, czy aplikacja znajduje się w Multi-Window?

Wywołaj isInMultiWindowMode() z Activity. Metoda zwraca true, jeśli aplikacja działa w Split Screen, PiP lub Freeform. Można także zasubskrybować się na onMultiWindowModeChanged().

Czy Multi-Window działa na Android TV?

Na Android TV dostępny jest tylko tryb Picture-in-Picture. Split Screen i Freeform nie są obsługiwane — telewizory używają jednego głównego ekranu z oknem PiP w rogu.

Co dzieje się z foreground-serwisem w Multi-Window?

Foreground-serwis kontynuuje działanie niezależnie od trybu. Jeśli jednak aplikacja przechodzi do PiP, system może tymczasowo wstrzymać wykonanie w celu oszczędzania zasobów.

Jak obsługiwać przeciąganie (Drag and Drop) między oknami?

Android obsługuje Drag and Drop między oknami w Multi-Window przez ClipData i View.OnDragListener. Dane są przesyłane przez ContentProvider lub Intent z FLAG_GRANT_READ_URI_PERMISSION.

Podsumowanie

  • Multi-Window — wielozadaniowość Androida z trzema trybami do jednoczesnej pracy aplikacji.
  • Split Screen — podział ekranu na dwie części z przeciąganym separatorem.
  • Picture-in-Picture — wideo w miniaturowym oknie dla Androida 8.0+.
  • Freeform — okna o dowolnym rozmiarze na Android TV i Samsung DeX.
  • resizeableActivity — obowiązkowa flaga w manifeście do obsługi trybu.
  • onMultiWindowModeChanged — callback do przebudowy interfejsu przy wejściu/wyjściu.
  • Podsumowanie — Multi-Window jest obowiązkowy do obsługi dla wszystkich aplikacji na dużych ekranach od 2022 roku.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również