X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/b017073e960ad2039a823740b5f1ca1771d23278..c1df34b5e38a671c7cd57aa223a5251812e84824:/src/com/owncloud/android/services/OperationsService.java diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 81a4adee..798c371d 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -156,7 +156,16 @@ public class OperationsService extends Service { return START_NOT_STICKY; } - + @Override + public void onDestroy() { + //Log.wtf(TAG, "onDestroy init" ); + super.onDestroy(); + //Log.wtf(TAG, "Clear mOperationResults" ); + mOperationResults.clear(); + //Log.wtf(TAG, "onDestroy end" ); + } + + /** * Provides a binder object that clients can use to perform actions on the queue of operations, * except the addition of new operations. @@ -338,9 +347,9 @@ public class OperationsService extends Service { } } - public RemoteOperationResult getOperationResultIfFinished(int mDetectAuthOpId) { - //Log_OC.wtf(TAG, "Searching result for operation with id " + mDetectAuthOpId); - return mOperationResults.remove(mDetectAuthOpId); + public RemoteOperationResult getOperationResultIfFinished(int operationId) { + //Log_OC.wtf(TAG, "Searching result for operation with id " + operationId); + return mOperationResults.remove(operationId); } } @@ -443,12 +452,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 +514,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 +531,9 @@ public class OperationsService extends Service { count += 1; } } + if (count == 0) { + mOperationResults.put(operation.hashCode(), result); + } Log_OC.d(TAG, "Called " + count + " listeners"); }