2012-01-20 12 views
6

Come dice il titolo, dovrei ancora progettare la mia applicazione intorno a un limite di dimensione heap di 16 MB? Il motivo per cui lo chiedo è che recentemente ho sviluppato un gioco che funziona bene sul mio Droid 2, che ha quasi 2 anni. Ma quando provo la mia app utilizzando un AVD con un limite di 16 MB, mi vengono fuori errori di memoria. Monitorare la mia applicazione con DDMS indica che la memoria totale allocata per il mio gioco è di circa 20 MB. Non è un'enorme differenza, ma far funzionare il mio gioco sotto quel limite di 16 MB farebbe davvero male alla grafica.Limite di dimensioni heap Android, abbiamo ancora veramente bisogno di progettare applicazioni con un limite di 16 MB in mente?

Ora, se questo fosse il 2008, non avrei nemmeno fatto questa domanda. Ma è il 2012, quasi 4 anni dopo il debutto del G1. È sicuro dire che la maggior parte dei telefoni realizzati lo scorso anno consente alle applicazioni di allocare più di 16 MB di memoria? O mi sto davvero fottendo non progettando la mia applicazione con un limite di 16 MB in mente?

+0

Ho mantenuto il mio vecchio telefono per 5 anni. Mi aspetto di mantenere il mio Droid 2G anche per 5 anni. – Chloe

risposta

6

Il limite di heap varia a seconda della risoluzione del dispositivo (e probabilmente anche di altri fattori). Quindi su un dispositivo ad alta risoluzione il limite di heap può essere 30 MB mentre su una bassa risoluzione G1 è 16 MB. In generale, è necessario modificare la grafica di conseguenza in modo che i dispositivi a bassa risoluzione utilizzino una grafica a bassa risoluzione (che occupa meno spazio) e i dispositivi ad alta risoluzione utilizzino grafica ad alta risoluzione (che occupa più spazio).

+2

Grazie, il tuo post mi ha portato a capire perché ho avuto un crash sulla mia applicazione all'interno dell'emulatore, in primo luogo. Avevo impostato il mio AVD con una risoluzione dello schermo di grandi dimensioni, ma di conseguenza non aumentava le dimensioni dell'heap. Quando sono tornato indietro e ho cambiato la risoluzione dello schermo in qualcosa di simile all'originale G1, il mio gioco funzionava perfettamente senza superare il limite di 16 MB di heap. – AntiWiggin

2

Sì, ne abbiamo ancora bisogno ma non in tutti i casi. Se si utilizza il codice nativo, la memoria allocata dal compilatore c non include in questo limite. Pertanto è possibile fornire più memoria al componente essenziale dell'applicazione. e il secondo modo è usare Texture per disegnare immagini usando la memoria OpenGL.quindi per queste Texture non include memoria limitata.

Ma queste tecnica non può essere implementare in tutti i casi

più Una cosa importante, non è possibile utilizzare questi 30 MB completamente also.Only il 30% di esso è utilizzabile per una sola applicazione.

+0

"Solo il 30% di esso è utilizzabile per un'applicazione." che dire di aprire 5 app insieme? –

Problemi correlati