diff --git a/src/com/owncloud/android/files/services/FileDownloader.java b/src/com/owncloud/android/files/services/FileDownloader.java index feedc11c03..cd7afa62f4 100644 --- a/src/com/owncloud/android/files/services/FileDownloader.java +++ b/src/com/owncloud/android/files/services/FileDownloader.java @@ -109,15 +109,31 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis @Override public void onCreate() { super.onCreate(); + Log_OC.d(TAG, "Creating service"); mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - HandlerThread thread = new HandlerThread("FileDownloaderThread", - Process.THREAD_PRIORITY_BACKGROUND); + HandlerThread thread = new HandlerThread("FileDownloaderThread", Process.THREAD_PRIORITY_BACKGROUND); thread.start(); mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper, this); mBinder = new FileDownloaderBinder(); } + + /** + * Service clean up + */ + @Override + public void onDestroy() { + Log_OC.v(TAG, "Destroying service" ); + mBinder = null; + mServiceHandler = null; + mServiceLooper.quit(); + mServiceLooper = null; + mNotificationManager = null; + super.onDestroy(); + } + + /** * Entry point to add one or several files to the queue of downloads. * @@ -126,6 +142,8 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis */ @Override public int onStartCommand(Intent intent, int flags, int startId) { + Log_OC.d(TAG, "Starting command with id " + startId); + if ( !intent.hasExtra(EXTRA_ACCOUNT) || !intent.hasExtra(EXTRA_FILE) ) { @@ -342,11 +360,10 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis Iterator it = requestedDownloads.iterator(); while (it.hasNext()) { String next = it.next(); - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Handling download file " + next);*/ mService.downloadFile(next); } } + Log_OC.d(TAG, "Stopping after command with id " + msg.arg1); mService.stopSelf(msg.arg1); } } diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index 386f18573a..6f77a9c12b 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -161,7 +161,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe @Override public void onCreate() { super.onCreate(); - Log_OC.i(TAG, "mPendingUploads size:" + mPendingUploads.size()); + Log_OC.d(TAG, "Creating service"); mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); HandlerThread thread = new HandlerThread("FileUploaderThread", Process.THREAD_PRIORITY_BACKGROUND); thread.start(); @@ -170,6 +170,21 @@ public class FileUploader extends Service implements OnDatatransferProgressListe mBinder = new FileUploaderBinder(); } + /** + * Service clean up + */ + @Override + public void onDestroy() { + Log_OC.v(TAG, "Destroying service" ); + mBinder = null; + mServiceHandler = null; + mServiceLooper.quit(); + mServiceLooper = null; + mNotificationManager = null; + super.onDestroy(); + } + + /** * Entry point to add one or several files to the queue of uploads. * @@ -179,6 +194,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe */ @Override public int onStartCommand(Intent intent, int flags, int startId) { + Log_OC.d(TAG, "Starting command with id " + startId); + if (!intent.hasExtra(KEY_ACCOUNT) || !intent.hasExtra(KEY_UPLOAD_TYPE) || !(intent.hasExtra(KEY_LOCAL_FILE) || intent.hasExtra(KEY_FILE))) { Log_OC.e(TAG, "Not enough information provided in intent"); @@ -467,6 +484,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe mService.uploadFile(it.next()); } } + Log_OC.d(TAG, "Stopping command after id " + msg.arg1); mService.stopSelf(msg.arg1); } } diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 4b5343b34b..06760e850d 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -440,7 +440,8 @@ public class SynchronizeFolderOperation extends SyncOperation { */ private void startContentSynchronizations(List filesToSyncContents, OwnCloudClient client) throws OperationCancelledException { - + + Log_OC.v(TAG, "Starting content synchronization... "); RemoteOperationResult contentsResult = null; for (SyncOperation op: filesToSyncContents) { if (mCancellationRequested.get()) { diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 2e57ada978..581a686d70 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -144,6 +144,8 @@ public class OperationsService extends Service { @Override public void onCreate() { super.onCreate(); + Log_OC.d(TAG, "Creating service"); + /// First worker thread for most of operations HandlerThread thread = new HandlerThread("Operations thread", Process.THREAD_PRIORITY_BACKGROUND); thread.start(); @@ -165,12 +167,12 @@ public class OperationsService extends Service { */ @Override public int onStartCommand(Intent intent, int flags, int startId) { - // WIP: for the moment, only SYNC_FOLDER and CANCEL_SYNC_FOLDER is expected here; + Log_OC.d(TAG, "Starting command with id " + startId); + + // WIP: for the moment, only SYNC_FOLDER is expected here; // the rest of the operations are requested through the Binder if (ACTION_SYNC_FOLDER.equals(intent.getAction())) { - /*Log_OC.v("NOW " + TAG + ", thread " + Thread.currentThread().getName(), "Received request to sync folder");*/ - if (!intent.hasExtra(EXTRA_ACCOUNT) || !intent.hasExtra(EXTRA_REMOTE_PATH)) { Log_OC.e(TAG, "Not enough information provided in intent"); return START_NOT_STICKY; @@ -186,10 +188,6 @@ public class OperationsService extends Service { Message msg = mSyncFolderHandler.obtainMessage(); msg.arg1 = startId; msg.obj = itemSyncKey; - /*Log_OC.v( - "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Sync folder " + remotePath + " added to queue" - );*/ mSyncFolderHandler.sendMessage(msg); } @@ -204,7 +202,7 @@ public class OperationsService extends Service { @Override public void onDestroy() { - //Log_OC.wtf(TAG, "onDestroy init" ); + Log_OC.v(TAG, "Destroying service" ); // Saving cookies try { OwnCloudClientManagerFactory.getDefaultSingleton(). @@ -221,10 +219,16 @@ public class OperationsService extends Service { e.printStackTrace(); } - //Log_OC.wtf(TAG, "Clear mUndispatchedFinishedOperations" ); mUndispatchedFinishedOperations.clear(); - - //Log_OC.wtf(TAG, "onDestroy end" ); + + mOperationsBinder = null; + + mOperationsHandler.getLooper().quit(); + mOperationsHandler = null; + + mSyncFolderHandler.getLooper().quit(); + mSyncFolderHandler = null; + super.onDestroy(); } @@ -276,10 +280,6 @@ public class OperationsService extends Service { * @param file A folder in the queue of pending synchronizations */ public void cancel(Account account, OCFile file) { - /*Log_OC.v( - "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Received request to cancel folder " + file.getRemotePath() - );*/ mSyncFolderHandler.cancel(account, file); } @@ -413,6 +413,7 @@ public class OperationsService extends Service { @Override public void handleMessage(Message msg) { nextOperation(); + Log_OC.d(TAG, "Stopping after command with id " + msg.arg1); mService.stopSelf(msg.arg1); } diff --git a/src/com/owncloud/android/services/SyncFolderHandler.java b/src/com/owncloud/android/services/SyncFolderHandler.java index b68d930bd4..02f8f7a4ed 100644 --- a/src/com/owncloud/android/services/SyncFolderHandler.java +++ b/src/com/owncloud/android/services/SyncFolderHandler.java @@ -86,9 +86,8 @@ class SyncFolderHandler extends Handler { @Override public void handleMessage(Message msg) { Pair itemSyncKey = (Pair) msg.obj; - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Handling sync folder " + itemSyncKey.second);*/ doOperation(itemSyncKey.first, itemSyncKey.second); + Log_OC.d(TAG, "Stopping after command with id " + msg.arg1); mService.stopSelf(msg.arg1); } @@ -98,8 +97,6 @@ class SyncFolderHandler extends Handler { */ private void doOperation(Account account, String remotePath) { - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Getting sync folder " + remotePath);*/ mCurrentSyncOperation = mPendingOperations.get(account, remotePath); if (mCurrentSyncOperation != null) { @@ -120,8 +117,6 @@ class SyncFolderHandler extends Handler { mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, mService); - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Executing sync folder " + remotePath);*/ result = mCurrentSyncOperation.execute(mOwnCloudClient, mStorageManager); } catch (AccountsException e) { @@ -129,9 +124,6 @@ class SyncFolderHandler extends Handler { } catch (IOException e) { Log_OC.e(TAG, "Error while trying to get authorization", e); } finally { - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Removing payload " + remotePath);*/ - mPendingOperations.removePayload(account, remotePath); mService.dispatchResultToOperationListeners(null, mCurrentSyncOperation, result); @@ -158,26 +150,17 @@ class SyncFolderHandler extends Handler { Log_OC.e(TAG, "Cannot cancel with NULL parameters"); return; } - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Removing sync folder " + file.getRemotePath());*/ Pair removeResult = mPendingOperations.remove(account, file.getRemotePath()); SynchronizeFolderOperation synchronization = removeResult.first; if (synchronization != null) { - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Canceling returned sync of " + file.getRemotePath());*/ synchronization.cancel(); } else { // TODO synchronize? if (mCurrentSyncOperation != null && mCurrentAccount != null && mCurrentSyncOperation.getRemotePath().startsWith(file.getRemotePath()) && account.name.equals(mCurrentAccount.name)) { - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Canceling current sync as descendant: " + mCurrentSyncOperation.getRemotePath());*/ mCurrentSyncOperation.cancel(); - } else { - /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(), - "Nothing else in cancelation of " + file.getRemotePath());*/ } }