summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2015-11-06 22:16:19 +0100
committerMartin Fietz <Martin.Fietz@gmail.com>2015-11-06 22:20:14 +0100
commitcbb7d4d14a8d9dac95498a1c6d7ea3e4306d64d1 (patch)
treecfc35fbdcd27578d9e393c24e0e21d21fe20f0ac /core/src
parent5380bcd6d0ba5ed52026098c032ae41befa216d2 (diff)
downloadAntennaPod-cbb7d4d14a8d9dac95498a1c6d7ea3e4306d64d1.zip
Prevent leaking the activity
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java
index 732fa2d27..2ce506c22 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java
@@ -15,6 +15,7 @@ import de.danoeh.antennapod.core.service.download.Downloader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* Provides access to the DownloadService's list of items that are currently being downloaded.
@@ -39,6 +40,8 @@ public class DownloadObserver {
private Thread refresherThread;
private AtomicBoolean refresherThreadRunning = new AtomicBoolean(false);
+ private AtomicInteger users = new AtomicInteger(0);
+
/**
* Creates a new download observer.
@@ -59,13 +62,18 @@ public class DownloadObserver {
}
public void onResume() {
- if (BuildConfig.DEBUG) Log.d(TAG, "DownloadObserver resumed");
- activity.registerReceiver(contentChangedReceiver, new IntentFilter(DownloadService.ACTION_DOWNLOADS_CONTENT_CHANGED));
- connectToDownloadService();
+ Log.d(TAG, "DownloadObserver resumed");
+ if(users.getAndIncrement() == 0) {
+ activity.registerReceiver(contentChangedReceiver, new IntentFilter(DownloadService.ACTION_DOWNLOADS_CONTENT_CHANGED));
+ connectToDownloadService();
+ }
}
public void onPause() {
- if (BuildConfig.DEBUG) Log.d(TAG, "DownloadObserver paused");
+ Log.d(TAG, "DownloadObserver paused");
+ if(users.decrementAndGet() > 0) {
+ return;
+ }
try {
activity.unregisterReceiver(contentChangedReceiver);
} catch (IllegalArgumentException e) {