Non ne riesco a venire a capo !!!
La sub seguente :
viene richiamata per caricare una immagine JPG di 946 KB. Tutto OK !
Poi, tramite opportuni comandi, l'utilizzatore carica una diversa immagine (diciamo di 400 KB). Ancora tutto OK !
Successivamente l'utilizzatore carica la precedente immagine di 946 KB. Ed appare l'errore, apparentemente in :
Questo è il log relativo :
Ma, mi domando io, con le istruzioni
non si azzera la memoria impegnata dalla bitmap ? E quindi la memoria è libera per caricare qualche bitmap, giusto ?
Dove sbaglio ?
Grazie per l'attenzione !
La sub seguente :
B4X:
Sub PreparaElementiContenitori
CurrentPointerId=-1
CurrentX=0
CurrentY=0
MinDragMove= 10
Panel1.Initialize("")
Activity.AddView(Panel1, 0, 0, Main.LargSchermo , Main.AltSchermo )
Canvas1.Initialize(Panel1)
If BMP.IsInitialized Then
Dim Obj1 As Reflector
Obj1.Target = BMP
Obj1.RunMethod("recycle")
End If
Log ("qui parte l'errore")
BMP.Initialize(File.DirRootExternal , Main.NomeFile)
' BMP.InitializeSample (File.DirRootExternal , Main.NomeFile, intLargImmagine, 600 )
Log ("se c'è errore questo messaggio non appare mai")
DestRect.Initialize(CurrentX, CurrentY, BMP.Width-CurrentX, BMP.Height-CurrentY)
SrcRect.Initialize(0, 0, BMP.Width, BMP.Height)
Gestures1.SetOnTouchListener(Panel1, "Handle_Touch")
DisegnaBitmap(0, 0)
End Sub
viene richiamata per caricare una immagine JPG di 946 KB. Tutto OK !
Poi, tramite opportuni comandi, l'utilizzatore carica una diversa immagine (diciamo di 400 KB). Ancora tutto OK !
Successivamente l'utilizzatore carica la precedente immagine di 946 KB. Ed appare l'errore, apparentemente in :
B4X:
BMP.Initialize(File.DirRootExternal , Main.NomeFile)
Questo è il log relativo :
qui parte l'errore
panorama_preparaelementicontenitori (B4A line: 113)
BMP.Initialize(File.DirRootExternal , Main.NomeFile)
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:470)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:525)
at anywheresoftware.b4a.objects.drawable.CanvasWrapper$BitmapWrapper.Initialize2(CanvasWrapper.java:498)
at anywheresoftware.b4a.objects.drawable.CanvasWrapper$BitmapWrapper.Initialize(CanvasWrapper.java:491)
at alpvir.panorami.panorama._preparaelementicontenitori(panorama.java:2644)
at alpvir.panorami.panorama._activity_create(panorama.java:390)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:170)
at alpvir.panorami.panorama.afterFirstLayout(panorama.java:84)
at alpvir.panorami.panorama.access$100(panorama.java:16)
at alpvir.panorami.panorama$WaitForLayout.run(panorama.java:72)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3806)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Ma, mi domando io, con le istruzioni
B4X:
If BMP.IsInitialized Then
Dim Obj1 As Reflector
Obj1.Target = BMP
Obj1.RunMethod("recycle")
End If
Dove sbaglio ?
Grazie per l'attenzione !
Last edited: