Présentation de l'API Memory Advice

L'API Memory Advice est une API expérimentale qui aide les applications Android à respecter les limites de sécurité pour l'utilisation de la mémoire. Pour ce faire, cette API évalue le volume de ressources mémoire utilisé, puis avertit l'application lorsque certains seuils sont dépassés. Elle peut également indiquer directement à votre application le pourcentage estimé d'utilisation de la mémoire.

Les estimations fournies par cette API permettent de déterminer à quel moment votre application doit ajuster l'utilisation de sa mémoire ou de trouver des points à améliorer dans les futures versions de votre application. Ces ajustements peuvent inclure tous les éléments qui modifient la consommation de mémoire, tels que la réduction du niveau de détails ainsi que de la qualité des éléments visuels et audio.

Les ressources de mémoire estimées incluent la mémoire dynamique native allouée par malloc, ainsi que la mémoire graphique allouée par les API OpenGL ES et Vulkan Graphics. L'API Memory Advice est donc la solution idéale pour les jeux et les applications nécessitant une grande quantité de ressources graphiques.

Ces estimations sont basées sur les éléments suivants :

  • Métriques sur les appareils collectées par l'API
  • Données de machine learning sur les appareils
  • Tests d'appareils

Au niveau de l'API, l'API Memory Advice définit un ensemble d'états "Memory Advice" et les communique aux applications avec un ensemble de fonctions.

Premiers pas Premiers pas avec les jeux Unity

Distributions

L'API Memory Advice fait partie du kit de l'Android Games Development Kit (AGDK). Elle est distribuée via les canaux suivants :

Les jeux doivent utiliser la version de l'API Memory Advice recommandée pour leur environnement de compilation. Pour Android Studio, nous vous recommandons la version de Jetpack. Pour l'extension Android Game Development (AGDE), nous vous recommandons la version disponible sur la page de téléchargement AGDK.

Fonctionnalités

Cette section décrit les fonctionnalités de l'API Memory Advice.

État de la mémoire

L'API indique les états de mémoire suivants aux applications :

  • MEMORYADVICE_STATE_OK
  • MEMORYADVICE_STATE_APPROACHING_LIMIT
  • MEMORYADVICE_STATE_CRITICAL

Pour en savoir plus, consultez les pages de référence memoryadvice_memorystate.

Signaler l'état de la mémoire

L'API permet de signaler l'état de la mémoire via un mécanisme d'interrogation ou de rappel :

  • Interrogation :
    Une application peut appeler l'API à tout moment pour obtenir l'état de la mémoire.

  • Rappel :
    Une application peut associer une fonction de rappel à l'API Memory Advice. L'application spécifie la fréquence des rappels. Cette fréquence permet de déterminer quand exécuter le rappel lorsque la condition de mémoire de l'application approche de la limite de sécurité ou devient extrêmement faible. Le rappel n'est pas invoqué si l'état de la mémoire est sans risque. Le rappel est exécuté à partir de son propre thread et non à partir d'un thread appartenant à l'application.

Aspects à noter concernant le coût et la fréquence des appels

L'API Memory Advice utilise du temps de calcul pour générer l'état de la mémoire. Le coût varie selon l'appareil, mais il est généralement compris entre 1 ms et 3 ms par appel. Tenez-en compte pour déterminer la fréquence d'interrogation de l'état de la mémoire, ou la fréquence à spécifier pour le rappel d'état de mémoire.

Exigences

Configuration requise de l'appareil

  • Android 4.4 (niveau d'API 19) ou version ultérieure

Conditions applicables aux applications

  • L'API n'est compatible qu'avec les applications natives (principalement conçues en C/C++).

  • L'API n'est compatible qu'avec les appareils physiques, pas avec les émulateurs.

Configuration requise pour les versions NDK

La version de l'API Memory Advice est compatible avec les versions NDK les plus courantes. Reportez-vous aux notes de version pour obtenir la liste des versions NDK compatibles.

Autres ressources

Problèmes et commentaires

L'API Memory Advice est en version bêta. Si vous avez des suggestions ou rencontrez des problèmes lors de son utilisation, créez un rapport dans IssueTracker.