diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index 5d5000720f..ff571e5da6 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -115,7 +115,7 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_ACCOUNT, callerActivity.getAccount()); service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); service.putExtra(OperationsService.EXTRA_SEND_INTENT, sendIntent); - callerActivity.startService(service); + callerActivity.getOperationsServiceBinder().newOperation(service); } else { Log_OC.wtf(TAG, "Trying to open a NULL OCFile"); @@ -154,7 +154,7 @@ public class FileOperationsHelper { service.setAction(OperationsService.ACTION_UNSHARE); service.putExtra(OperationsService.EXTRA_ACCOUNT, callerActivity.getAccount()); service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); - callerActivity.startService(service); + callerActivity.getOperationsServiceBinder().newOperation(service); callerActivity.showLoadingDialog(); diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 81a4adeec4..af177075a0 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/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 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"); } diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index c4dd28a2b7..49437303d0 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -306,6 +306,11 @@ public class FileActivity extends SherlockFragmentActivity implements OnRemoteOp } + public OperationsServiceBinder getOperationsServiceBinder() { + return mOperationsServiceBinder; + } + + /** * Helper class handling a callback from the {@link AccountManager} after the creation of * a new ownCloud {@link Account} finished, successfully or not.