diff options
author | Martin Fietz <Martin.Fietz@gmail.com> | 2015-11-06 22:16:19 +0100 |
---|---|---|
committer | Martin Fietz <Martin.Fietz@gmail.com> | 2015-11-06 22:20:14 +0100 |
commit | cbb7d4d14a8d9dac95498a1c6d7ea3e4306d64d1 (patch) | |
tree | cfc35fbdcd27578d9e393c24e0e21d21fe20f0ac /core/src/main | |
parent | 5380bcd6d0ba5ed52026098c032ae41befa216d2 (diff) | |
download | AntennaPod-cbb7d4d14a8d9dac95498a1c6d7ea3e4306d64d1.zip |
Prevent leaking the activity
Diffstat (limited to 'core/src/main')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java | 16 |
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) { |