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");
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();
} finally {
synchronized(mPendingOperations) {
mPendingOperations.poll();
- mOperationResults.put(mCurrentOperation.hashCode(), result);
}
}
//sendBroadcastOperationFinished(mLastTarget, mCurrentOperation, result);
- callbackOperationListeners(mLastTarget, mCurrentOperation, result);
+ dispatchOperationListeners(mLastTarget, mCurrentOperation, result);
}
}
* @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();
count += 1;
}
}
+ if (count == 0) {
+ mOperationResults.put(operation.hashCode(), result);
+ }
Log_OC.d(TAG, "Called " + count + " listeners");
}
}
+ 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.