If we're stopped, make sure watchdog alarm is also stopped

Bug: 5647625
Change-Id: I33e94107f2d6e4a38a5a221df72ed83596ca7c54
diff --git a/src/com/android/email/service/AttachmentDownloadService.java b/src/com/android/email/service/AttachmentDownloadService.java
index b0db0bb..18468fb 100644
--- a/src/com/android/email/service/AttachmentDownloadService.java
+++ b/src/com/android/email/service/AttachmentDownloadService.java
@@ -405,13 +405,22 @@
             return count;
         }
 
+        private void cancelWatchdogAlarm() {
+            if (mAlarmManager != null && mWatchdogPendingIntent != null) {
+                mAlarmManager.cancel(mWatchdogPendingIntent);
+            }
+        }
+
         /**
          * Watchdog for downloads; we use this in case we are hanging on a download, which might
          * have failed silently (the connection dropped, for example)
          */
         private void onWatchdogAlarm() {
-            // If our service instance is gone, just leave...
-            if (mStop) return;
+            // If our service instance is gone, just leave (but cancel alarm first!)
+            if (mStop) {
+                cancelWatchdogAlarm();
+                return;
+            }
             long now = System.currentTimeMillis();
             for (DownloadRequest req: mDownloadsInProgress.values()) {
                 // Check how long it's been since receiving a callback
@@ -425,9 +434,7 @@
             }
             // If there are downloads in progress, reset alarm
             if (mDownloadsInProgress.isEmpty()) {
-                if (mAlarmManager != null && mWatchdogPendingIntent != null) {
-                    mAlarmManager.cancel(mWatchdogPendingIntent);
-                }
+                cancelWatchdogAlarm();
             }
             // Check whether we can start new downloads...
             if (mConnectivityManager != null && mConnectivityManager.hasConnectivity()) {