Die Memory Advice API ist eine experimentelle native API, die Android-Apps dabei hilft, die Sicherheitslimits für die Speichernutzung einzuhalten. Dazu schätzt die API die Menge der verwendeten Speicherressourcen und benachrichtigt die App, wenn bestimmte Grenzwerte überschritten werden. Die API kann den geschätzten Prozentsatz der Speichernutzung auch direkt an Ihre App senden.
Anhand der von der API bereitgestellten Schätzungen können Sie ermitteln, wann die Arbeitsspeichernutzung Ihrer App angepasst werden sollte, oder Bereiche finden, die in zukünftigen Versionen Ihrer App verbessert werden können. Die Anpassungen können alles umfassen, was die Arbeitsspeichernutzung verändert, z. B. die Details und Qualität von visuellen und Audio-Assets.
Die geschätzten Speicherressourcen umfassen nativen Heap-Speicher, der von malloc zugewiesen wird, und Grafikspeicher, der von den OpenGL ES- und Vulkan-Grafik-APIs zugewiesen wird. Das macht die Memory Advice API ideal für Spiele und grafikintensive Apps.
Die Schätzungen basieren auf folgenden Faktoren:
- Von der API erfasste Gerätemesswerte
- Daten zum maschinellen Lernen von Geräten
- Gerätetests
Auf API-Ebene definiert die Memory Advice API eine Reihe von Speicherempfehlungsstatus und kommuniziert diese mit Apps über eine Reihe von Funktionen.
Erste Schritte Erste Schritte für Unity-Spiele
Distributionen
Die Memory Advice API ist Teil des Android Games Development Kit (AGDK) und wird über die folgenden Kanäle bereitgestellt:
- Binäre Releases in den Android Games Jetpack-Bibliotheken
- Binäre Releases auf der AGDK-Downloadseite
- Quellcode in AOSP
Für Spiele sollte die Memory Advice API-Version verwendet werden, die für die jeweilige Build-Umgebung empfohlen wird. Für Android Studio empfehlen wir die Jetpack-Version. Für die Android Game Development Extension (AGDE) empfehlen wir die Version auf der Downloadseite des AGDK.
Funktionen
In diesem Abschnitt werden die Funktionen der Memory Advice API beschrieben.
Arbeitsspeicherstatus
Die API meldet Apps die folgenden Arbeitsspeicherstatus:
- MEMORYADVICE_STATE_OK
- MEMORYADVICE_STATE_APPROACHING_LIMIT
- MEMORYADVICE_STATE_CRITICAL
Weitere Informationen finden Sie auf den Referenzseiten zu memoryadvice_memorystate.
Arbeitsspeicherstatus melden
Die API unterstützt die Meldung des Speicherstatus entweder über einen Polling- oder einen Callback-Mechanismus:
Polling:
Eine App kann die API jederzeit aufrufen, um den Speicherstatus abzurufen.Callback:
Eine App kann eine Callback-Funktion bei der Memory Advice API registrieren. Die App gibt die Häufigkeit der Anrufe für den Rückruf an. Die API verwendet die Häufigkeit, um zu bestimmen, wann der Rückruf ausgeführt werden soll, wenn der Arbeitsspeicher der Anwendung dem Grenzwert näherkommt oder kritisch niedrig ist. Der Rückruf wird nicht aufgerufen, wenn die Speicherbedingung sicher ist. Der Callback wird in einem eigenen Thread ausgeführt, nicht in einem Thread, der zur App gehört.
Kosten und Häufigkeit der Anrufe
Die Memory Advice API verwendet Rechenzeit, um den Speicherstatus zu generieren. Die Kosten variieren je nach Gerät, liegen aber in der Regel zwischen 1 ms und 3 ms pro Anruf. Sie sollten diesen Overhead berücksichtigen, wenn Sie festlegen, wie oft der Speicherstatus abgefragt werden soll oder welche Häufigkeit für den Rückruf des Speicherstatus angegeben werden soll.
Voraussetzungen
Geräteanforderungen
- Android 4.4 (API-Level 19) oder höher
Anforderungen an Apps
Die API unterstützt nur native Apps (Apps, die hauptsächlich in C/C++ geschrieben wurden).
Die API unterstützt nur physische Geräte. Emulatoren werden nicht unterstützt.
Anforderungen an die NDK-Version
Die Memory Advice API wird von den meisten gängigen NDK-Versionen unterstützt. Eine Liste der unterstützten NDK-Versionen finden Sie in den Release-Notes.
Zusätzliche Ressourcen
- Memory Advice API-Versionshinweise
- Referenzdokumentation zur Memory Advice API
- Beispiel für Speicherempfehlungen auf GitHub
- Memory Advice API-Quellcode
Probleme und Feedback
Die Memory Advice API befindet sich in der Betaphase und wir freuen uns über Feedback. Wenn Sie Vorschläge haben oder Probleme bei der Verwendung der API feststellen, erstellen Sie ein Problem im IssueTracker.