Small improvements to the refresh of the files list and memory handling while synchro...
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / syncadapter / FileSyncAdapter.java
index 230d3a7..0bd2ec2 100644 (file)
@@ -21,7 +21,9 @@ package eu.alefzero.owncloud.syncadapter;
 import java.io.IOException;\r
 import java.util.ArrayList;\r
 import java.util.Iterator;\r
+import java.util.LinkedList;\r
 import java.util.List;\r
+import java.util.Queue;\r
 import java.util.Vector;\r
 \r
 import org.apache.jackrabbit.webdav.DavException;\r
@@ -70,7 +72,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         \r
         Log.d(TAG, "syncing owncloud account " + account.name);\r
 \r
-        sendStickyBroadcast(true, -1);  // starting message to UI\r
+        sendStickyBroadcast(true, -1);  // message to signal the start to the UI\r
 \r
         PropFindMethod query;\r
         try {\r
@@ -108,8 +110,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             getClient().executeMethod(query);\r
             MultiStatus resp = null;\r
             resp = query.getResponseBodyAsMultiStatus();\r
-            List<String> paths = new ArrayList<String>();\r
-            List<Long> fileIds = new ArrayList<Long>(); \r
+            Queue<String> paths = new LinkedList<String>();\r
+            Queue<Long> fileIds = new LinkedList<Long>(); \r
             for (int i = 1; i < resp.getResponses().length; ++i) {\r
                 WebdavEntry we = new WebdavEntry(resp.getResponses()[i], getUri().getPath());\r
                 OCFile file = fillOCFile(we);\r
@@ -135,11 +137,11 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             sendStickyBroadcast(true, parentId);\r
 \r
             // recursive fetch\r
-            Iterator<String> pathsIt = paths.iterator();\r
-            Iterator<Long> fileIdsIt = fileIds.iterator();\r
-            while (pathsIt.hasNext()) {\r
-                fetchData(getUri().toString() + pathsIt.next(), syncResult, fileIdsIt.next());\r
+            while(!paths.isEmpty()) {\r
+                fetchData(getUri().toString() + paths.remove(), syncResult, fileIds.remove());\r
             }\r
+            paths = null;\r
+            fileIds = null;\r
 \r
 \r
         } catch (OperationCanceledException e) {\r