outOfMemoryException nell'emulatore Android [duplicato]

0

Sto sviluppando un'applicazione Android che è responsabile della visualizzazione di contenuti multimediali come video e foto all'utente.

Ho una certa attività per una galleria di foto. Nel mio telefono in cui sto sviluppando l'applicazione, tutto funziona correttamente. Attualmente lo sto testando in un emulatore con un piccolo schermo per controllare gli errori di layout e ho notato che l'attività della galleria si interrompe quando si scorrono le foto lanciando un outOfMemoryException .

Il mio telefono su cui stavo sviluppando l'applicazione è un Samsung S Advance, che ritengo sia nella media, non qualcosa di veramente potente, solo un telefono con specifiche normali.

Dovrei essere preoccupato per quell'eccezione che sto ricevendo nell'emulatore o è qualcosa che non accadrà mai nelle condizioni del mondo reale?

    
posta libathos 25.02.2014 - 10:35
fonte

2 risposte

0

Quando Android era ancora un ragazzino, i suoi genitori hanno deciso di assegnare a ciascuna delle sue applicazioni un limite di memoria. Vedendo come gli schermi erano schermi telefonici relativamente piccoli e la RAM e le risoluzioni erano basse, era perfettamente logico impostarlo a 16 MB per app.

Ciò che i genitori non tenevano pienamente in considerazione era che il bambino sarebbe diventato più grande. Gli schermi sono diventati più grandi, le risoluzioni sono diventate più grandi e la RAM ora è così grande che potresti eseguire Windows su di essa.

Molti produttori come Samsung hanno aumentato il limite di memoria per-app a 24MB o 32MB nelle loro ROM. Ho visto tablet con limiti di memoria per-app da 96 a 128 MB.

Puoi scoprire quanto è alto il limite di memoria sul tuo dispositivo chiamando ActivityManager.getMemoryClass .

Nella vita reale, ho visto pochissimi dispositivi con schermi ad alta risoluzione con il tipo di limiti di memoria per app bassi come l'emulatore, quindi non mi preoccuperei troppo di questo.

    
risposta data 25.02.2014 - 22:36
fonte
0

Con l'emulatore, imposti la quantità di memoria quando la avvii, e di solito i suoi valori predefiniti sono molto inferiori a quelli che normalmente avresti sul tuo telefono. Anche su un telefono normale, ci sono molte insidie che causano outOfMemoryException, ad es. perdite di memoria (più facili di quanto si possa pensare), caricando più dati bitmap di quelli di risoluzione / dimensione, caricando tutte le immagini contemporaneamente, ecc.

In generale, se stai ricevendo outOfMemoryException su un telefono reale, tende ad essere uno degli errori di codifica sopra menzionati.

    
risposta data 03.03.2014 - 16:42
fonte

Leggi altre domande sui tag