Die Memory Advice API ist eine experimentelle native API, mit der Android-Apps die Sicherheitsgrenzen für die Speichernutzung einhalten können. Die API erreicht dies, indem sie die Menge der verwendeten Speicherressourcen schätzt und die Anwendung dann benachrichtigt, wenn bestimmte Schwellenwerte überschritten werden. Die API kann den geschätzten Prozentsatz der Arbeitsspeichernutzung auch direkt an Ihre App melden.
Anhand der Schätzungen der API lässt sich bestimmen, wann die Speichernutzung Ihrer App angepasst werden sollte. Außerdem lassen sich damit Bereiche ermitteln, die in zukünftigen Versionen Ihrer App verbessert werden können. Die Anpassungen können alles umfassen, was sich auf den Speicherverbrauch auswirkt, z. B. die Verringerung der Details und der Qualität von Bild- und Audio-Assets.
Die geschätzten Arbeitsspeicherressourcen umfassen den von Malloc zugewiesenen nativen Heap-Speicher und den von den OpenGL ES und Vulkan Graphics APIs zugewiesenen Grafikspeicher. Dadurch eignet sich die Memory Advice API optimal für Spiele und grafikintensive Apps.
Die Schätzungen basieren auf Folgendem:
- Von der API erfasste Gerätemesswerte
- Machine-Learning-Daten von Geräten
- Gerätetests
Auf API-Ebene definiert die Memory Advice API eine Reihe von Empfehlungsstatus für den Arbeitsspeicher und sendet diese mit einer Reihe von Funktionen an Apps.
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 vertrieben:
- Binäre Releases in den Jetpack-Bibliotheken der Android-Spiele
- Binär-Releases auf der AGDK-Downloadseite.
- Quellcode auf AOSP
Für Spiele sollte die Memory Advice API-Version verwendet werden, die für ihre Build-Umgebung empfohlen wird. Für Android Studio empfehlen wir den Jetpack-Release. Für die Android Game Development Extension (AGDE) empfehlen wir den Release auf der AGDK-Downloadseite.
Funktionen
In diesem Abschnitt werden die Funktionen der Memory Advice API beschrieben.
Speicherstatus
Die API meldet Apps die folgenden Speicherstatus:
- MEMORYADVICE_STATE_OK
- Speicherlimit (SPPROACHING_LIMIT)
- SPEICHERKRITERIEN_STATISTIK
Weitere Informationen finden Sie auf den Referenzseiten zu memoryadvice_memorystate.
Arbeitsspeicherstatus melden
Die API unterstützt die Meldung des Speicherstatus entweder über einen Abfrage- oder einen Callback-Mechanismus:
Polling:
Eine App kann jederzeit die API aufrufen, um den Arbeitsspeicherstatus abzurufen.Callback:
Eine App kann eine Callback-Funktion mit der Memory Advice API registrieren. Die App gibt die Anrufhäufigkeit für den Rückruf an. Die API bestimmt anhand der Frequenz, wann der Callback ausgeführt werden soll, wenn sich der Zustand des Anwendungsspeichers dem sicheren Limit nähert oder kritisch niedrig ist. Der Callback wird nicht aufgerufen, wenn die Speicherbedingungen sicher sind. Der Callback wird aus seinem eigenen Thread ausgeführt, nicht von einem Thread, der zur Anwendung gehört.
Überlegungen zu Kosten und Anrufhäufigkeit
Die Memory Advice API generiert den Speicherstatus anhand der Rechenzeit. Die Kosten variieren je nach Gerät, liegen jedoch in der Regel zwischen 1 und 3 ms pro Anruf. Sie sollten diesen Mehraufwand berücksichtigen, wenn Sie festlegen, wie oft der Arbeitsspeicherstatus abgefragt oder die Häufigkeit für den Callback für den Arbeitsspeicherstatus angegeben werden soll.
Voraussetzungen
Geräteanforderungen
- Android 4.4 (API-Level 19) oder höher.
Anforderungen an Apps
Die API unterstützt nur systemeigene Apps, d. h. Apps, die hauptsächlich in C/C++ geschrieben sind.
Die API unterstützt nur physische Geräte, Emulatoren werden nicht unterstützt.
NDK-Versionsanforderungen
Die Memory Advice API-Version unterstützt die gängigsten NDK-Versionen. Eine Liste der unterstützten NDK-Versionen findest du in den Versionshinweisen.
Zusätzliche Ressourcen
- Versionshinweise zur Memory Advice API
- Referenzdokumentation zur Memory Advice API
- Beispiel für Memory Advice auf GitHub
- Quellcode der Memory Advice API
Probleme und Feedback
Die Memory Advice API befindet sich in der Betaphase und wir freuen uns über Feedback. Wenn du Vorschläge hast oder Probleme bei der Verwendung der API findest, erstelle ein Problem im IssueTracker.