Omówienie interfejsu Memory Advice API

Interfejs Memory Advice API to eksperymentalny natywny interfejs API, który pomaga aplikacjom na Androida zachować bezpieczne limity wykorzystania pamięci. Interfejs API osiąga to, szacując ilość zasobów pamięci, które są używane, a potem powiadami aplikację, gdy przekroczone zostaną określone progi. Interfejs API może też bezpośrednio w aplikacji podać szacowany odsetek wykorzystania pamięci.

Szacunki podawane przez interfejs API pomagają określić, kiedy aplikacja powinna dostosować użycie pamięci, oraz znaleźć obszary, które można ulepszyć w przyszłych wersjach aplikacji. Dostosowania mogą obejmować wszystko, co zmienia zużycie pamięci, np. zmniejszenie szczegółów i jakości komponentów wizualnych i dźwiękowych.

Szacowane zasoby pamięci obejmują pamięć na stosie przydzielaną przez malloc oraz pamięć graficzną przydzielaną przez interfejsy API OpenGL ES i Vulkan Graphics, dzięki czemu interfejs Memory Advice API jest idealny do gier i aplikacji intensywnie korzystających z grafiki.

Szacunki są tworzone na podstawie:

  • Dane o urządzeniach zbierane przez interfejs API
  • Dane z urządzeń dotyczące systemów uczących się
  • Testowanie urządzeń

Na poziomie interfejsu API interfejs API dotyczącego porad dotyczących pamięci definiuje zestaw stanów porad dotyczących pamięci i przekazuje je aplikacjom za pomocą zestawu funkcji.

Pierwsze kroki Pierwsze kroki w przypadku gier na Unity

Dystrybucja

Interfejs API dotyczącego zaleceń dotyczących pamięci jest częścią pakietu Android Games Development Kit (AGDK) i jest rozpowszechniany za pomocą tych kanałów:

Gry powinny używać wersji interfejsu Memory Advice API zalecanej dla ich środowiska kompilacji. W przypadku Android Studio zalecamy wersję Jetpack. W przypadku Android Game Development Extension (AGDE) zalecamy wersję dostępną na stronie pobierania AGDK.

Funkcje

W tej sekcji opisujemy funkcje interfejsu Memory Advice API.

Stan pamięci

Interfejs API przekazuje 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 zgłaszanie stanu pamięci za pomocą mechanizmu pollingu 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 funkcji callback. Interfejs API używa częstotliwości do określenia, kiedy wykonać wywołanie zwrotne, gdy stan pamięci aplikacji zbliża się do bezpiecznego limitu lub jest krytycznie niski. Jeśli stan pamięci jest bezpieczny, funkcja wywołania zwrotnego nie jest wywoływana. Funkcja wywołania zwrotnego jest wykonywana w ramach własnego wątku, a nie wątku należącego do aplikacji.

Kwestie związane z kosztami i częstotliwości wywoływania

Interfejs Memory Advice API wykorzystuje czas obliczeniowy do generowania stanu pamięci. Koszt zależy od urządzenia, ale zwykle wynosi od 1 do 3 ms na połączenie. Należy wziąć to pod uwagę, ustalając, jak często sprawdzać stan pamięci lub jaką częstotliwość wywołania funkcji obsługi stanu pamięci.

Wymagania

Wymagania dotyczące urządzeń

  • Android 4.4 (poziom 19 interfejsu API) lub nowszy.

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 większość popularnych wersji NDK. Aby zobaczyć listę obsługiwanych wersji NDK, zapoznaj się z notatkami do wersji.

Dodatkowe materiały

Problemy i opinie

Interfejs Memory Advice API jest w wersji beta i zapraszamy do dzielenia się opiniami. Jeśli masz sugestie lub napotkasz problemy podczas korzystania z interfejsu API, utwórz zgłoszenie w IssueTracker.