Podobnie jak w poprzednich wersjach, Android 16 zawiera zmiany zachowania, które mogą mieć wpływ na Twoją aplikację. Poniższe zmiany zachowania mają zastosowanie wyłącznie do aplikacji kierowanych na Androida 16 lub nowszego. Jeśli Twoja aplikacja jest kierowana na Androida 16 lub nowszego, w razie potrzeby zmodyfikuj ją, aby obsługiwała te funkcje.
Zapoznaj się też z listą zmian zachowania, które mają wpływ na wszystkie aplikacje działające na Androidzie 16, niezależnie od targetSdkVersion
Twojej aplikacji.
Wrażenia użytkownika i interfejs systemu
Android 16 zawiera poniższe zmiany, które mają na celu zapewnienie bardziej spójnego i intuicyjnego interfejsu.
Wymagane przeprowadzenie migracji lub rezygnacja z funkcji przewidywania wstecz
W przypadku aplikacji kierowanych na Androida 16 lub nowszego i uruchomionych na urządzeniu z Androidem 16 lub nowszym domyślnie włączone są animacje systemu przewidywanego przejścia wstecz (powrót do ekranu głównego, przejście między zadaniami i aplikacją).
Dodatkowo funkcja onBackPressed
nie jest wywoływana, a zapytanie KeyEvent.KEYCODE_BACK
nie jest już wysyłane.
Jeśli Twoja aplikacja przechwytuje zdarzenie wstecz i nie została jeszcze przeniesiona na nawigację wstecz z wykorzystaniem przewidywania, zaktualizuj ją, aby używała obsługiwanych interfejsów API nawigacji wstecz, lub użyj tymczasowego wyłączenia, ustawiając atrybut android:enableOnBackInvokedCallback
na false
w tagu <application>
lub <activity>
pliku AndroidManifest.xml
aplikacji.
Główna funkcja
Android 16 zawiera te zmiany, które modyfikują lub rozszerzają różne podstawowe funkcje systemu Android.
Optymalizacja harmonogramu pracy z ustaloną stawką
Przed kierowaniem na Androida 16, gdy scheduleAtFixedRate
nie udało się wykonać zadania, ponieważ nie było ono dostępne w ramach prawidłowego cyklu życia procesu, wszystkie niewykonane zadania są natychmiast wykonywane, gdy aplikacja wraca do prawidłowego cyklu życia.
W przypadku kierowania na Androida 16 maksymalnie 1 niewykonany wcześniej element scheduleAtFixedRate
jest natychmiast wykonywany, gdy aplikacja wraca do prawidłowego cyklu życia. Ta zmiana zachowania powinna poprawić działanie aplikacji. Przetestuj to zachowanie w aplikacji, aby sprawdzić, czy na nią wpływa.
Możesz też przeprowadzić testy za pomocą ramy kompatybilności aplikacji i włączenia flagi zgodności STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
.
Duże ekrany i formaty
Android 16 wprowadza te zmiany w przypadku aplikacji wyświetlanych na urządzeniach z dużym ekranem.
Układy adaptacyjne
Aplikacje na Androida działają teraz na różnych urządzeniach (takich jak telefony, tablety, urządzenia składane i komputery) oraz w różnych trybach okna na dużych ekranach (np. w trybie podzielonego ekranu i okna na komputerze). Deweloperzy powinni więc tworzyć aplikacje na Androida, które dostosowują się do dowolnego ekranu i rozmiaru okna niezależnie od orientacji urządzenia. W dzisiejszym świecie urządzeń wieloplatformowych takie paradygmaty jak ograniczanie orientacji i możliwości zmiany rozmiaru są zbyt restrykcyjne.
zignoruj ograniczenia dotyczące orientacji, zmiany rozmiaru i formatu obrazu;
W przypadku aplikacji kierowanych na Androida 16 Android 16 zawiera zmiany w zarządzaniu orientacją, możliwością zmiany rozmiaru i ograniczeniami dotyczącymi proporcji. Na wyświetlaczach o szerokości ≥ 600 dp te ograniczenia nie obowiązują. Aplikacje wypełniają też cały ekran niezależnie od proporcji i preferowanej orientacji użytkownika. Nie stosuje się też formatu pillarbox.
Ta zmiana wprowadza nowe standardowe działanie platformy. Android przechodzi do modelu, w którym aplikacje mają się dostosowywać do różnych orientacji, rozmiarów ekranu i proporcji. Ograniczenia takie jak zablokowana orientacja lub ograniczona możliwość zmiany rozmiaru utrudniają dostosowanie aplikacji, dlatego zalecamy stworzenie adaptacyjnej aplikacji, aby zapewnić użytkownikom jak najlepsze wrażenia.
Typowe zmiany powodujące niezgodność
Ignorowanie ograniczeń dotyczących orientacji, możliwości zmiany rozmiaru i formatu obrazu może wpłynąć na interfejs aplikacji na niektórych urządzeniach, zwłaszcza na elementy zaprojektowane pod kątem małych układów blokowanych w orientacji poziomej. Mogą wystąpić problemy, takie jak rozciągnięte układy, animacje i elementy wykraczające poza ekran. Wszelkie założenia dotyczące proporcji lub orientacji mogą powodować problemy wizualne w aplikacji. Dowiedz się więcej, jak ich unikać i poprawić działanie aplikacji w trybie dostosowywania.
Zezwalanie na obracanie urządzenia powoduje ponowne tworzenie większej liczby działań, co może spowodować utratę stanu użytkownika, jeśli nie zostanie on odpowiednio zachowany. Dowiedz się, jak prawidłowo zapisywać stan interfejsu użytkownika w artykule Zapisywanie stanów interfejsu użytkownika.
Szczegóły implementacji
Na urządzeniach z dużym ekranem w trybie pełnoekranowym i wielozadaniowość są ignorowane następujące atrybuty pliku manifestu i interfejsy API w czasie wykonywania:
Te wartości atrybutów screenOrientation
i setRequestedOrientation()
są ignorowane:
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
Jeśli chodzi o możliwość zmiany rozmiaru wyświetlacza, opcje android:resizeableActivity="false"
, android:minAspectRatio
i android:maxAspectRatio
nie mają wpływu.
W przypadku aplikacji kierowanych na Androida 16 na dużych ekranach domyślnie ignorowane są ograniczenia dotyczące orientacji, zmiany rozmiaru i formatu obrazu, ale każda aplikacja, która nie jest w pełni gotowa, może tymczasowo zastąpić to zachowanie, rezygnując z tego ograniczenia (co spowoduje, że aplikacja będzie działać w trybie zgodności).
Wyjątki
Ograniczenia dotyczące orientacji, zmiany rozmiaru i proporcji na Androidzie 16 nie obowiązują w tych sytuacjach:
- Gry (na podstawie flagi
android:appCategory
) - użytkownicy wyraźnie wyrażają zgodę na domyślne zachowanie aplikacji w ustawieniach proporcji obrazu na urządzeniu;
- Ekrany mniejsze niż
sw600dp
Tymczasowe wyłączenie
Aby zrezygnować z określonej aktywności, zadeklaruj PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
właściwość pliku manifestu:
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
Jeśli zbyt wiele części Twojej aplikacji nie jest gotowych na Androida 16, możesz całkowicie zrezygnować z korzystania z tej funkcji, stosując tę samą właściwość na poziomie aplikacji:
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>