Android Question OutOfMemory error

Discussion in 'Android Questions' started by hibrid0, Jun 25, 2015.

  1. hibrid0

    hibrid0 Active Member Licensed User

    Hi guys, I'm creating an app to create a PDF file, the pdf file is created with PDFwriter, and have many images inside.

    I use the garbage Collector for images with the reflector lib.
    Tested in 3 Devices, and in the Device I really need run it, not work!!!

    Finally I run a Test on my phone and work fine with 10 or more pages.

    In Tablet test 1: (The real device client want to use this App)

    Total Pages Generate: 10
    Total Images used: 28
    Tablet: Lenovo Ideatab A3000 (IdeaTabA3000-H)
    CPU: MTk 8389/8125 Quad Core de 1,2 GHz
    RAM: 1GB
    Android version: 4.2
    Crash!


    In Phone Test 2:

    Total Pages Generate: 14
    Total Images used: 52
    Phone: Amazon FirePhone
    CPU: Snapdragon 800 2.2GHz Quad-core
    RAM: 2GB
    Android version: FireOS 4.6.1 (Kitkat 4.4)
    Work Very Faster

    In Tablet Test 3

    Total Pages Generate: 14
    Total Images used: 52
    Tablet: Lenovo Yoga 8" B6000-F
    CPU: MediaTek MT8125 Quad Core de 1,2 GHz
    RAM: 1GB
    Android version: 4.4.2
    Work Fine


    I add the code from Infoxmatrix to see the max memory, FreeMemory and TotalMemory from here

    And Here this part on the crash:

    PDF Convert
    max Memory 134217728
    FreeMemory 7611936
    totalMemory 37351424
    Memoria Disponible :102029.53125

    PDF Writer
    max Memory 134217728
    FreeMemory 28835040
    totalMemory 114974720
    Memoria Disponible :46951.21875



    I have in the manifest:
    SetApplicationAttribute(android:largeHeap,"true")

    To Insert Images I use this:

    Code:
    Sub insertar_imagen2 (nombre_imagen As String, izquierda As Double, arriba As Double)
        img_Logo=
    LoadBitmapSample("", nombre_imagen,310120)

        img_Logo=CreateScaledBitmap(img_Logo, 
    239180,True)

        PDFWriter1.addImage(mm2Points(izquierda),mm2Points(arriba), img_Logo)

    Dim Obj1,obj2 As Reflector
          Obj1.Target = img_Logo                            
          Obj1.RunMethod(
    "recycle")
    End Sub
    To Create PDF Page I use someting like this:

    Code:
    Sub Hoja1
    page_counter=page_counter+
    1
        PDFWriter1.newPage()
        PDFWriter1.setFont(fonts.SUBTYPE, fonts.TIMES_ROMAN)
        PDFWriter1.setFont2(fonts.SUBTYPE, fonts.TIMES_ROMAN, fonts.WIN_ANSI_ENCODING)

    SOME CODE LINES, RECTANGLES, TEXT ETC
    insertar_imagen2(
    "Image1", left, horizontal_position)
    end sub
    How can I solve to create more pages in the PDF in devices with low RAM?
    How can I create a Page then excute garbage Collector for everything have inside this page?

    I see this code in the forum.
    Code:
    Dim r As Reflector
            r.RunStaticMethod(
    "java.lang.System""gc"NullNull)
    Installing file.
    PackageAdded: package:createpdf.forms
    ** Activity (main) Create, isFirst = true **
    ** Activity (main) Resume **
    ** Activity (main) Pause, UserClosed = false **
    ** Activity (generar_borrador) Create, isFirst = true **
    PDF Convert
    PDF Writer
    generar_borrador_crear_pdf (B4A line: 111)
    PDFContent = PDFWriter1.outputToScreen
    java.lang.OutOfMemoryError
    at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
    at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
    at java.lang.StringBuilder.append(StringBuilder.java:216)
    at com.rootsoft.pdfwriter.PDFDocument.toPDFString(PDFDocument.java:57)
    at com.rootsoft.pdfwriter.PDFWriter.asString(PDFWriter.java:113)
    at com.rootsoft.pdfwriter.myPDFWriter.outputToScreen(myPDFWriter.java:95)
    at createpdf.forms.generar_borrador._crear_pdf(generar_borrador.java:742)
    at createpdf.forms.generar_borrador._activity_create(generar_borrador.java:495)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:187)
    at createpdf.forms.generar_borrador.afterFirstLayout(generar_borrador.java:100)
    at createpdf.forms.generar_borrador.access$100(generar_borrador.java:17)
    at createpdf.forms.generar_borrador$WaitForLayout.run(generar_borrador.java:78)
    at android.os.Handler.handleCallback(Handler.java:725)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:153)
    at android.app.ActivityThread.main(ActivityThread.java:5299)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)
     
    Last edited: Jun 26, 2015
  2. Erel

    Erel Administrator Staff Member Licensed User

Loading...