L'API Memory Advice è un'API nativa sperimentale che aiuta le app per Android a rispettare i limiti di sicurezza per l'utilizzo della memoria. L'API lo ottiene stimando la quantità di risorse di memoria in uso e poi inviando una notifica all'app quando vengono superate determinate soglie. L'API può anche segnalare la percentuale stimata di utilizzo della memoria direttamente alla tua app.
Le stime fornite dall'API consentono di determinare quando l'app deve aggiustare l'utilizzo della memoria o di trovare aree da migliorare nelle versioni future dell'app. Gli aggiustamenti potrebbero includere qualsiasi elemento che modifichi il consumo di memoria, ad esempio la riduzione dei dettagli e della qualità degli asset visivi e audio.
Le risorse di memoria stimate includono la memoria heap nativa allocata da malloc e la memoria grafica allocata dalle API OpenGL ES e Vulkan Graphics, il che rende l'API Memory Advice ideale per giochi e app con uso intensivo di grafica.
Le stime vengono effettuate in base a quanto segue:
- Metriche del dispositivo raccolte dall'API
- Dati di machine learning dei dispositivi
- Test del dispositivo
A livello di API, l'API Memory Advice definisce un insieme di stati di consigli per la memoria e li comunica alle app con un insieme di funzioni.
Inizia Inizia per i giochi Unity
Distribuzioni
L'API Memory Advice fa parte dell'Android Games Development Kit (AGDK) ed è distribuita tramite i seguenti canali:
- Uscite binarie nelle librerie Jetpack per giochi Android.
- Uscite binarie nella pagina di download dell'AGDK.
- Codice sorgente su AOSP.
I giochi devono utilizzare la release dell'API Memory Advice consigliata per il loro ambiente di compilazione. Per Android Studio, consigliamo la release di Jetpack. Per l'Android Game Development Extension (AGDE), consigliamo la release disponibile nella pagina di download dell'AGDK.
Funzionalità
Questa sezione descrive le funzionalità dell'API Memory Advice.
Stato della memoria
L'API segnala alle app i seguenti stati della memoria:
- MEMORYADVICE_STATE_OK
- MEMORYADVICE_STATE_APPROACHING_LIMIT
- MEMORYADVICE_STATE_CRITICAL
Per maggiori dettagli, consulta le pagine di riferimento di memoryadvice_memorystate.
Report sullo stato della memoria
L'API supporta la segnalazione dello stato della memoria tramite un meccanismo di polling o di callback:
Polling:
un'app può chiamare l'API in qualsiasi momento per recuperare lo stato della memoria.Callback:
un'app può registrare una funzione di callback con l'API Memory Advice. L'app specifica la frequenza di chiamata per il callback. L'API utilizza la frequenza per determinare quando eseguire il callback quando la condizione della memoria dell'applicazione si sta avvicinando al limite di sicurezza o è criticamente bassa. Il callback non viene invocato se la condizione di memoria è sicura. Il callback viene eseguito dal proprio thread, non da un thread appartenente all'app.
Considerazioni sui costi e sulla frequenza delle chiamate
L'API Memory Advice utilizza il tempo di calcolo per generare lo stato della memoria. Il costo varia in base al dispositivo, ma in genere è compreso tra 1 ms e 3 ms per chiamata. Devi tenere conto di questo overhead quando determini la frequenza con cui eseguire il polling dello stato della memoria o la frequenza da specificare per il callback dello stato della memoria.
Requisiti
Requisiti del dispositivo
- Android 4.4 (livello API 19) o versioni successive.
Requisiti delle app
L'API supporta solo le app native (app scritte principalmente in C/C++).
L'API supporta solo i dispositivi fisici; gli emulatori non sono supportati.
Requisiti per la versione NDK
La release dell'API Memory Advice supporta le versioni NDK più diffuse. Consulta le note di rilascio per l'elenco delle versioni NDK supportate.
Risorse aggiuntive
- Note di rilascio dell'API Memory Advice
- Documentazione di riferimento dell'API Memory Advice
- Esempio di consigli sulla memoria su GitHub
- Codice sorgente dell'API Memory Advice
Problemi e feedback
L'API Memory Advice è in versione beta e accetta feedback. Se hai suggerimenti o riscontri problemi durante l'utilizzo dell'API, crea un problema in IssueTracker.