Zmiany zachowania: aplikacje kierowane na Androida 16 lub nowszego

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.

Animacja przewidywanego powrotu do domu.
Przewidowana animacja aktywności.
Animacja przewidywania zadań.

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 screenOrientationsetRequestedOrientation() 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:minAspectRatioandroid: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_RESIZABILITYwł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>