فهرست منبع

Grant that same result is never processed twice by the same listener (one through callback, one through getResult)

masensio 11 سال پیش
والد
کامیت
40f5eb6de6
1فایلهای تغییر یافته به همراه5 افزوده شده و 3 حذف شده
  1. 5 3
      src/com/owncloud/android/services/OperationsService.java

+ 5 - 3
src/com/owncloud/android/services/OperationsService.java

@@ -443,12 +443,11 @@ public class OperationsService extends Service {
             } finally {
                 synchronized(mPendingOperations) {
                     mPendingOperations.poll();
-                    mOperationResults.put(mCurrentOperation.hashCode(), result);
                 }
             }
             
             //sendBroadcastOperationFinished(mLastTarget, mCurrentOperation, result);
-            callbackOperationListeners(mLastTarget, mCurrentOperation, result);
+            dispatchOperationListeners(mLastTarget, mCurrentOperation, result);
         }
     }
 
@@ -506,7 +505,7 @@ public class OperationsService extends Service {
      * @param operation         Finished operation.
      * @param result            Result of the operation.
      */
-    private void callbackOperationListeners(
+    private void dispatchOperationListeners(
             Target target, final RemoteOperation operation, final RemoteOperationResult result) {
         int count = 0;
         Iterator<OnRemoteOperationListener> listeners = mBinder.mBoundListeners.keySet().iterator();
@@ -523,6 +522,9 @@ public class OperationsService extends Service {
                 count += 1;
             }
         }
+        if (count == 0) {
+            mOperationResults.put(operation.hashCode(), result);
+        }
         Log_OC.d(TAG, "Called " + count + " listeners");
     }