From 3dfb0b592b5812728ced03324ffa9838574ae3d3 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Fri, 20 Nov 2015 10:45:16 -0500 Subject: [PATCH] Change out all-in-one deserialization process with object-by-object method to save memory. Still not enough. Looks like I'll need to send each object right into the DB instead of into a list. --- .../api/MagnatuneAlbumsConverter.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/api/MagnatuneAlbumsConverter.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/api/MagnatuneAlbumsConverter.java index 99824ff..2c82895 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/api/MagnatuneAlbumsConverter.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/api/MagnatuneAlbumsConverter.java @@ -6,9 +6,13 @@ import com.magnatune.eyecreate.companionformagnatune.model.xml.Track; import com.squareup.okhttp.ResponseBody; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.basic.DateConverter; -import com.thoughtworks.xstream.io.xml.Xpp3Driver; +import com.thoughtworks.xstream.io.xml.KXml2Driver; import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.OptionalDataException; +import java.util.ArrayList; +import java.util.List; import java.util.zip.GZIPInputStream; import retrofit.Converter; @@ -17,18 +21,26 @@ public class MagnatuneAlbumsConverter implements Converter albums = new ArrayList<>(); + while(!processingDone) { + try { + albums.add((Album) objectStream.readObject()); + } catch(OptionalDataException e) { + processingDone = true; + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } } - return conversion; + AlbumResponse response = new AlbumResponse(); + response.albums = albums; + return response; } } -- GitLab