Italian OutOfMemoryError usando GameView

LordZenzo

Well-Known Member
Licensed User
Longtime User
sto usando la GameView per un mio gioco di SlotMachine
siccome il gioco fa parte di una collezione di giochi, mi serve entrare ed uscire piu volte dalla Slot
quando entra nella slot devo inizializzare una bitmapMutable
per cui

Ruote.Bitmap.InitializeMutable(Dimensione*3,Dimensione*(slot+1))

quando entra la prima volta Ruote non e` inizializzata e non da problemi
quando entra la seconda volta Ruote non e` inizializzata (perche viene dichiarata localmente) ma da questo errore

java.lang.OutOfMemoryError: Failed to allocate a 26542092 byte allocation with 6624400 free bytes and 6MB until OOM

come se la memoria consumata prima non sia stata rilasciata

come faccio?
 

Star-Dust

Expert
Licensed User
Longtime User
Oggi non te ne va una giusta. Prova a dichiararla nel Process_Global magari risolvi come il Timer :p:p:p

Anche perché non crea un nuovo oggetto.ogni volta che entri..
 

Star-Dust

Expert
Licensed User
Longtime User
No, gli oggetti che riguardano l'interfaccia grafica vanno dichiarati solo nella Globals.


T'attacchi, a meno che non pubblichi il sorgente o molte più informazioni :p
Dichiararlo nel Global risolverebbe lo stesso credo
 

Star-Dust

Expert
Licensed User
Longtime User
Soluzione 1

B4X:
#SupportedOrientations: landscape

Tentativo di soluzione 2

B4X:
 if Ruote.IsInitialized=False then Ruote.Bitmap.InitializeMutable(Dimensione*3,Dimensione*(slot+1))


Comunque se non posti un pezzo di codice cosi da provarlo come facciamo a capire.
Non che io sia bravo ma magari qualche sciocchezza che ti sia sfuggita posso ancora trovarla.
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
dopo decine di prove e uno snervante debug passo passo,
ho scoperto che solo quando "esco" dalla slot e cambio verso al telefono e quindi viene invocata la Activity_Create il caricamento dei vari Layount da problemi di memoria
anche uscendo da altri giochi(per ora sono 4) viene invocata la Activity_Create ma non da problemi
 

Star-Dust

Expert
Licensed User
Longtime User
Scusa ma non ho avuto tempo oggi, alla fine hai risolto?
 

Star-Dust

Expert
Licensed User
Longtime User
Io ho fatto un gioco con LibGDX e posso dire che andava bene, certo progettarlo concettualmente é molto diverso da altri metodi. Cmq se l'algoritmo non è congeniato bene falcimente si blocca. La grafica dev'essere molto curata altrimenti esce una cosa orrribile.

Negli ultimi giochi ho usato canvas, ovviamente giochi che non richiedono molta velocità, e andavo aggiornando Canvas per ottenere il movimento, ma il dispositivo riscaldava un botto e scaricava la batteria.

Adesso ho rinunciato ai giochi.
 
Last edited:

AlpVir

Well-Known Member
Licensed User
Longtime User
Un analogo problema di OutOfMemory l'ho risolto inserendo nel manifest
SetApplicationAttribute(android:largeHeap, "true")
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
Un analogo problema di OutOfMemory l'ho risolto inserendo nel manifest
SetApplicationAttribute(android:largeHeap, "true")
lo ho inserito, ma ho anche tolto la GameView, tanto non ho bisogno di tante animazioni e le poche che faccio vanno bene usando le sole bitmap
 
Top