浏览代码

Cancel transfers of an account when it detects that the account doesn't exist

masensio 10 年之前
父节点
当前提交
aa7b7af721
共有 1 个文件被更改,包括 19 次插入6 次删除
  1. 19 6
      src/com/owncloud/android/files/services/FileUploader.java

+ 19 - 6
src/com/owncloud/android/files/services/FileUploader.java

@@ -327,7 +327,6 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
         return false;   // not accepting rebinding (default behaviour)
     }
 
-
     /**
      * Binder to let client components to perform operations on the queue of
      * uploads.
@@ -357,15 +356,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
             }
         }
 
-
-
         public void clearListeners() {
             mBoundListeners.clear();
         }
 
-
-
-
         /**
          * Returns True when the file described by 'file' is being uploaded to
          * the ownCloud account 'account' or waiting for it
@@ -548,6 +542,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
             } else {
                 // Cancel the transfer
                 Log_OC.d(TAG, "Account " + mCurrentUpload.getAccount().toString() + " doesn't exist");
+                cancelUploadForAccount(mCurrentUpload.getAccount().name);
+
             }
         }
 
@@ -887,4 +883,21 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
                 !localPath.endsWith(FILE_EXTENSION_PDF);
     }
 
+    /**
+     * Remove uploads of an account
+     * @param accountName
+     */
+    private void cancelUploadForAccount(String accountName){
+        // this can be slow if there are many uploads :(
+        Iterator<String> it = mPendingUploads.keySet().iterator();
+        Log_OC.d(TAG, "Number of pending updloads= "  + mPendingUploads.size());
+        boolean found;
+        while (it.hasNext()) {
+            String key = it.next();
+            Log_OC.d(TAG, "mPendingUploads CANCELLED" + key);
+            if (key.startsWith(accountName)) {
+                mPendingUploads.remove(key);
+            }
+        }
+    }
 }