Die Memory Advice API ist eine experimentelle native API, die Android-Apps dabei unterstützt, die Sicherheitslimits für die Speichernutzung einzuhalten. Die API schätzt dazu 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 melden.
Die von der API bereitgestellten Schätzungen helfen Ihnen, zu ermitteln, wann Ihre App die Arbeitsspeichernutzung anpassen sollte, oder Bereiche zu finden, die in zukünftigen Versionen Ihrer App verbessert werden können. Die Anpassungen können alles umfassen, was den Arbeitsspeicherverbrauch ändert, z. B. die Reduzierung der Details und Qualität von visuellen und Audio-Assets.
Die geschätzten Arbeitsspeicherressourcen umfassen den nativen Heap-Arbeitsspeicher, der von „malloc“ zugewiesen wird, und den Grafikarbeitsspeicher, der von den OpenGL ES- und Vulkan-Grafik-APIs zugewiesen wird. Daher ist 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 Speicherhinweisstatus und kommuniziert sie mit einer Reihe von Funktionen an Apps.
Erste Schritte Erste Schritte für Unity-Spiele
Distributionen
Die Memory Advice API ist Teil des Android Game Development Kit (AGDK) und wird über die folgenden Kanäle bereitgestellt:
- Binärversionen in den Android Games Jetpack-Bibliotheken
- Binäre Releases auf der AGDK-Downloadseite.
- Quellcode auf 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 Veröffentlichung auf der AGDK-Downloadseite.
Funktionen
In diesem Abschnitt werden die Funktionen der Memory Advice API beschrieben.
Arbeitsspeicherstatus
Die API meldet Apps die folgenden Speicherstatus:
- 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 das Melden des Speicherstatus ü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 Aufrufe für den Callback an. Die API verwendet die Häufigkeit, um zu bestimmen, wann der Callback ausgeführt werden soll, wenn der Arbeitsspeicher der Anwendung sich dem sicheren Grenzwert nähert oder kritisch niedrig ist. Der Callback wird nicht aufgerufen, wenn der Speicherstatus sicher ist. Der Callback wird über einen eigenen Thread ausgeführt, nicht über einen Thread, der zur App gehört.
Kosten und Anrufhäufigkeit
Die Memory Advice API benötigt 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 Aufruf. Sie sollten diesen Mehraufwand berücksichtigen, wenn Sie festlegen, wie oft der Speicherstatus abgefragt werden soll oder welche Häufigkeit für den Speicherstatus-Callback 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.
NDK-Versionsanforderungen
Die Memory Advice API-Version unterstützt die meisten gängigen NDK-Versionen. Eine Liste der unterstützten NDKs finden Sie in den Versionshinweisen.
Zusätzliche Ressourcen
- Versionshinweise zur Memory Advice API
- Referenzdokumentation zur Memory Advice API
- Memory Advice-Beispiel auf GitHub
- Quellcode der Memory Advice API
Probleme und Feedback
Die Memory Advice API befindet sich in der Betaphase. Wenn Sie Vorschläge haben oder Probleme bei der Verwendung der API auftreten, erstellen Sie ein Problem im IssueTracker.