summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/feed/FeedManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod/feed/FeedManager.java')
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index b4aff7bb0..e59721574 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -13,9 +13,11 @@ import de.danoeh.antennapod.service.PlaybackService;
import de.danoeh.antennapod.storage.*;
import de.danoeh.antennapod.util.FeedtitleComparator;
import de.danoeh.antennapod.util.comparator.FeedItemPubdateComparator;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
+import android.os.AsyncTask;
import android.os.Debug;
import android.util.Log;
@@ -51,6 +53,9 @@ public class FeedManager {
private DownloadRequester requester;
+ /** Prevents user from starting several feed updates at the same time. */
+ private static boolean isStartingFeedRefresh = false;
+
private FeedManager() {
feeds = Collections.synchronizedList(new ArrayList<Feed>());
categories = new ArrayList<FeedCategory>();
@@ -213,12 +218,38 @@ public class FeedManager {
sendUnreadItemsUpdateBroadcast(context, null);
}
- public void refreshAllFeeds(Context context) {
+ @SuppressLint("NewApi")
+ public void refreshAllFeeds(final Context context) {
if (AppConfig.DEBUG)
Log.d(TAG, "Refreshing all feeds.");
- for (Feed feed : feeds) {
- refreshFeed(context, feed);
+ if (!isStartingFeedRefresh) {
+ isStartingFeedRefresh = true;
+ AsyncTask<Void, Void, Void> updateWorker = new AsyncTask<Void, Void, Void>() {
+
+ @Override
+ protected void onPostExecute(Void result) {
+ if (AppConfig.DEBUG)
+ Log.d(TAG,
+ "All feeds have been sent to the downloadmanager");
+ isStartingFeedRefresh = false;
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ for (Feed feed : feeds) {
+ refreshFeed(context, feed);
+ }
+ return null;
+ }
+
+ };
+ if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
+ updateWorker.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ } else {
+ updateWorker.execute();
+ }
}
+
}
/**