Memory Advice API to eksperymentalny, natywny interfejs API, który pomaga aplikacjom na Androida przestrzegać limitów bezpieczeństwa związanych z wykorzystaniem pamięci. Aby to osiągnąć, interfejs API szacuje ilość używanych zasobów pamięci i wysyła powiadomienie aplikacji o przekroczeniu określonych progów. Interfejs API może też raportować szacowany odsetek wykorzystania pamięci bezpośrednio do aplikacji.
Szacunki dostarczane przez interfejs API pomagają określić, kiedy aplikacja powinna dostosować wykorzystanie pamięci, lub znaleźć obszary, które warto ulepszyć w kolejnych wersjach aplikacji. Korekty mogą obejmować wszystko, co zmienia zużycie pamięci, np. obniżenie szczegółów i jakości zasobów wizualnych i audio.
Szacowane zasoby pamięci obejmują natywną pamięć sterty przydzieloną przez Malloc oraz pamięć graficzną przydzieloną przez interfejsy OpenGL ES i Vulkan Graphics API, dzięki czemu interfejs Memory Advice API jest idealny do gier i aplikacji wymagających dużej karty graficznej.
Prognozy są obliczane na podstawie tych kryteriów:
- Dane o urządzeniach zbierane przez interfejs API
- Dane systemów uczących się z urządzeń
- Testowanie urządzenia
Na poziomie interfejsu API interfejs Memory Advice API definiuje zestaw stanów porad dotyczących pamięci i komunikuje je do aplikacji za pomocą zestawu funkcji.
Pierwsze kroki Pierwsze kroki w grach na Unity
Dystrybucja
Interfejs Memory Advice API jest częścią pakietu Android Games Development Kit (AGDK) i jest rozpowszechniany przez te kanały:
- Wersje binarne w bibliotekach Android Games Jetpack.
- Wersje binarne na stronie pobierania AGDK.
- Kod źródłowy w AOSP.
Gry powinny używać wersji Memory Advice API, która jest zalecana dla ich środowiska kompilacji. W przypadku Android Studio polecamy wersję Jetpacka. Rozszerzenie Android Game Development Extension (AGDE) zaleca się wyświetlić na stronie pobierania AGDK.
Funkcje
W tej sekcji opisaliśmy funkcje interfejsu Memory Advice API.
Stan pamięci
Interfejs API przekazuje do aplikacji te stany pamięci:
- MEMORYADVICE_STATE_OK
- MEMORYADVICE_STATE_APPROACHING_LIMIT (LIMIT)
- PAMIĘCI PORADY_STANU_KRYTYCZNEGO
Szczegółowe informacje znajdziesz na stronach z dokumentacją 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 każdej chwili wywołać interfejs API, aby pobrać stan pamięci.Wywołanie zwrotne:
Aplikacja może zarejestrować funkcję wywołania zwrotnego za pomocą interfejsu Memory Advice API. Aplikacja określa częstotliwość wywołania zwrotnego. Interfejs API używa częstotliwości do określenia, kiedy należy wykonać wywołanie zwrotne, gdy stan pamięci aplikacji zbliża się do bezpiecznego limitu lub jest zbyt niski. Wywołanie zwrotne nie jest wywoływane, jeśli warunek pamięci jest bezpieczny. Wywołanie zwrotne jest wykonywane z własnego wątku, a nie z wątku należącego do aplikacji.
Kwestie związane z kosztami i częstotliwością połączeń
Interfejs Memory Advice API do generowania stanu pamięci wykorzystuje czas obliczeniowy. Koszt zależy od urządzenia, ale zwykle wynosi od 1 ms do 3 ms za połączenie. Pamiętaj o tym przy ustalaniu, jak często odpytywać stan pamięci lub jaka ma być częstotliwość wywołania zwrotnego stanu pamięci.
Wymagania
Wymagania dotyczące urządzeń
- Androida 4.4 (poziom interfejsu API 19) lub nowszego.
Wymagania dotyczące aplikacji
Ten interfejs API obsługuje tylko aplikacje natywne (aplikacje napisane głównie w języku C/C++).
Interfejs API obsługuje tylko urządzenia fizyczne. Emulatory nie są obsługiwane.
Wymagania dotyczące wersji NK
Wersja Memory Advice API obsługuje najpopularniejsze wersje NDK. Listę obsługiwanych pakietów NDK znajdziesz w informacjach o wersji.
Dodatkowe materiały
- Informacje o wersji interfejsu Memory Advice API
- Dokumentacja interfejsu Memory Advice API
- Przykładowe porady dotyczące pamięci na GitHubie
- Kod źródłowy interfejsu Memory Advice API
Problemy i opinie
Interfejs Memory Advice API jest w wersji beta. Chętnie poznamy Twoją opinię. Jeśli masz jakieś sugestie lub natrafisz na problemy podczas korzystania z interfejsu API, utwórz problem w IssueTracker.