From 64c8ed55074191e00c07b6d561e845d06c30de72 Mon Sep 17 00:00:00 2001 From: Ciaran Gultnieks Date: Wed, 12 Sep 2012 00:02:27 +0100 Subject: [PATCH] More efficient memory usage when processing repo index --- src/org/fdroid/fdroid/RepoXMLHandler.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/org/fdroid/fdroid/RepoXMLHandler.java b/src/org/fdroid/fdroid/RepoXMLHandler.java index bb510c390..128c88e54 100644 --- a/src/org/fdroid/fdroid/RepoXMLHandler.java +++ b/src/org/fdroid/fdroid/RepoXMLHandler.java @@ -59,7 +59,7 @@ public class RepoXMLHandler extends DefaultHandler { private DB.App curapp = null; private DB.Apk curapk = null; - private String curchars = null; + private StringBuilder curchars = new StringBuilder(); private String pubkey; private String hashType; @@ -74,16 +74,8 @@ public class RepoXMLHandler extends DefaultHandler { } @Override - public void characters(char[] ch, int start, int length) - throws SAXException { - - super.characters(ch, start, length); - - String str = new String(ch).substring(start, start + length); - if (curchars == null) - curchars = str; - else - curchars += str; + public void characters(char[] ch, int start, int length) { + curchars.append(ch, start, length); } @Override @@ -92,7 +84,7 @@ public class RepoXMLHandler extends DefaultHandler { super.endElement(uri, localName, qName); String curel = localName; - String str = curchars; + String str = curchars.toString(); if (str != null) { str = str.trim(); } @@ -243,7 +235,7 @@ public class RepoXMLHandler extends DefaultHandler { } else if (localName == "hash" && curapk != null) { hashType = attributes.getValue("", "type"); } - curchars = null; + curchars.setLength(0); } private void getIcon(DB.App app) {