android - java.lang.OutOfMemoryError at java.util.ArrayList.add -
i using following code reading items xml file:
try { inputstream istream = assetmanager.open("files/items.xml"); documentbuilder builder = documentbuilderfactory.newinstance().newdocumentbuilder(); document doc = builder.parse(istream); doc.getdocumentelement().normalize(); nodelist nlist = doc.getelementsbytagname("item"); system.out.println(); (int temp = 0; temp < nlist.getlength(); temp++) { node nnode = nlist.item(temp); if (nnode.getnodetype() == node.element_node) { element eelement = (element) nnode; string name = gettagvalue("name", eelement); string family = gettagvalue("family", eelement); _shahidviewmodels.add(new shahidviewmodel( name, family )); } } istream.close(); } catch (exception e) { e.printstacktrace(); } the following error occurs:
2109-2109/? e/androidruntime﹕ fatal exception: main java.lang.outofmemoryerror @ java.util.arraylist.add(arraylist.java:114) @ addpt.resultsearchactivity.filldata(resultsearchactivity.java:76) @ addpt.resultsearchactivity.oncreate(resultsearchactivity.java:54) @ android.app.activity.performcreate(activity.java:5104) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080) @ android.app.activitythread.performlaunchactivity(activitythread.java:2144) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2230) @ android.app.activitythread.access$600(activitythread.java:141) @ android.app.activitythread$h.handlemessage(activitythread.java:1234) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:5041) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) @ dalvik.system.nativestart.main(native method) what error mean? , how solve problem?
build.gradle:
android { compilesdkversion 21 buildtoolsversion "21.1.1" dexoptions { javamaxheapsize "4g" } defaultconfig { applicationid "ad.dp.t" minsdkversion 14 targetsdkversion 21 versioncode 1 versionname "1.0" } buildtypes { release { minifyenabled false proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro' } } } please provide me solution. not have ideas solve problem
the number of records in items.xml was: 150000 record
its not way pull 1000 of rows once , all, introduce custom xml parsing pagination or use third party if any. load 50 items file , if user want load more data load next 50 items override outofmemory in activity or fragment safe side, best approach should says if list contains more 200 items remove 1st 50 items , add new items maintain max 200 items in list, other safe checks start or end of file, list size should consider doing not out of memory exception
Comments
Post a Comment