Omówienie interfejsu Memory Advice API

Memory Advice API to eksperymentalny natywny interfejs API, który pomaga aplikacjom na Androida utrzymywać się w bezpiecznych limitach zużycia pamięci. Interfejs API robi to, szacując ilość używanych zasobów pamięci, a następnie powiadamiając aplikację o przekroczeniu określonych progów. Interfejs API może też przekazywać do aplikacji szacowany odsetek wykorzystania pamięci.

Szacunki podawane przez interfejs API pomagają określić, kiedy aplikacja powinna dostosować wykorzystanie pamięci, lub znaleźć obszary, które można ulepszyć w przyszłych wersjach aplikacji. Dostosowania mogą obejmować wszystko, co zmienia zużycie pamięci, np. obniżenie szczegółowości i jakości zasobów wizualnych i audio.

Szacowane zasoby pamięci obejmują pamięć sterty natywnej przydzieloną przez funkcję malloc oraz pamięć graficzną przydzieloną przez interfejsy OpenGL ES i Vulkan Graphics API, co sprawia, że interfejs Memory Advice API idealnie nadaje się do gier i aplikacji wymagających dużej ilości grafiki.

Szacunki są oparte na tych czynnikach:

  • Dane o urządzeniach zbierane przez interfejs API
  • Dane z urządzeń na potrzeby uczenia maszynowego
  • Testowanie urządzeń

Na poziomie interfejsu API interfejs Memory Advice API definiuje zestaw stanów dotyczących pamięci i przekazuje je do aplikacji za pomocą zestawu funkcji.

Pierwsze kroki Pierwsze kroki w przypadku gier na Unity

Dystrybucja

Interfejs Memory Advice API jest częścią pakietu Android Games Development Kit (AGDK) i jest rozpowszechniany za pomocą tych kanałów:

Gry powinny korzystać z wersji interfejsu Memory Advice API zalecanej w danym środowisku kompilacji. W przypadku Android Studio zalecamy wersję Jetpack. W przypadku Android Game Development Extension (AGDE) zalecamy pobranie wersji ze strony pobierania AGDK.

Funkcje

W tej sekcji opisujemy funkcje interfejsu Memory Advice API.

Stan pamięci

Interfejs API raportuje aplikacjom te stany pamięci:

  • MEMORYADVICE_STATE_OK
  • MEMORYADVICE_STATE_APPROACHING_LIMIT
  • MEMORYADVICE_STATE_CRITICAL

Szczegółowe informacje znajdziesz na stronach referencyjnych memoryadvice_memorystate.

Raportowanie stanu pamięci

Interfejs API obsługuje raportowanie stanu pamięci za pomocą mechanizmu odpytywania lub wywołania zwrotnego:

  • Odpytywanie:
    aplikacja może w dowolnym momencie wywołać interfejs API, aby pobrać stan pamięci.

  • Wywołanie zwrotne:
    aplikacja może zarejestrować funkcję wywołania zwrotnego w interfejsie Memory Advice API. Aplikacja określa częstotliwość wywoływania wywołania zwrotnego. Interfejs API używa częstotliwości, aby określić, kiedy wykonać wywołanie zwrotne, gdy pamięć aplikacji zbliża się do bezpiecznego limitu lub jest krytycznie niska. Wywołanie zwrotne nie jest wywoływane, jeśli stan pamięci jest bezpieczny. Wywołanie zwrotne jest wykonywane we własnym wątku, a nie w wątku należącym do aplikacji.

Kwestie związane z kosztami i częstotliwością połączeń

Interfejs Memory Advice API wykorzystuje czas obliczeniowy do generowania stanu pamięci. Koszt zależy od urządzenia, ale zwykle wynosi od 1 ms do 3 ms na połączenie. Pamiętaj o tym narzucie, gdy będziesz określać, jak często chcesz odpytywać stan pamięci lub jaką częstotliwość chcesz podać w przypadku wywołania zwrotnego stanu pamięci.

Wymagania

Wymagania dotyczące urządzeń

  • Androida 4.4 (poziom 19 interfejsu API) lub nowszego.

Wymagania dotyczące aplikacji

  • Interfejs API obsługuje tylko aplikacje natywne (napisane głównie w językach C/C++).

  • Interfejs API obsługuje tylko urządzenia fizyczne. Emulatory nie są obsługiwane.

Wymagania dotyczące wersji NDK

Wersja interfejsu Memory Advice API obsługuje najpopularniejsze wersje NDK. Listę obsługiwanych wersji NDK znajdziesz w informacjach o wersji.

Dodatkowe materiały

Problemy i opinie

Interfejs Memory Advice API jest w wersji beta. Jeśli masz sugestie lub napotkasz problemy podczas korzystania z niego, utwórz zgłoszenie w IssueTrackerze.