diff options
author | Daniel Oeh <daniel@daniel-pc.(none)> | 2011-12-24 20:19:31 +0100 |
---|---|---|
committer | Daniel Oeh <daniel@daniel-pc.(none)> | 2011-12-24 20:19:31 +0100 |
commit | 53daf91337a70859edae9c3cfb9ec2a8ea3d6229 (patch) | |
tree | 71909c09a4be19259c45a31033ecbf20131980af /src | |
parent | 1f6bcb3659def2c2160477adb3d494a1030e9511 (diff) | |
download | AntennaPod-53daf91337a70859edae9c3cfb9ec2a8ea3d6229.zip |
Implemented run-Method in FeedSyncThread
Diffstat (limited to 'src')
-rw-r--r-- | src/de/podfetcher/feed/FeedManager.java | 13 | ||||
-rw-r--r-- | src/de/podfetcher/service/FeedSyncService.java | 26 |
2 files changed, 24 insertions, 15 deletions
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java index c88237fc0..af003bdda 100644 --- a/src/de/podfetcher/feed/FeedManager.java +++ b/src/de/podfetcher/feed/FeedManager.java @@ -56,18 +56,17 @@ public class FeedManager { } - /** Adds a new Feeditem if its not in the list - * This Method is only called if the downloaded Feed was already in the feedlist - * */ + /** Adds a new Feeditem if its not in the list */ public void addFeedItem(Context context, FeedItem item) { PodDBAdapter adapter = new PodDBAdapter(context); // Search list for feeditem Feed foundFeed = searchFeedByLink(item.link); - FeedItem foundItem = searchFeedItemByLink(foundFeed, item.link) + FeedItem foundItem = searchFeedItemByLink(foundFeed, item.link); if(foundItem != null) { - // Update Information, mark as read + // Update Information item.id = foundItem.id; - foundItem = item + foundItem = item; + item.read = foundItem.read; adapter.setFeedItem(item); } else { foundFeed.items.add(item); @@ -75,6 +74,7 @@ public class FeedManager { } } + /** Get a Feed by its link */ private Feed searchFeedByLink(String link) { for(Feed feed : feeds) { if(feed.link.equals(link)) { @@ -84,6 +84,7 @@ public class FeedManager { return null; } + /** Get a FeedItem by its link */ private FeedItem searchFeedItemByLink(Feed feed, String link) { for(FeedItem item : feed.items) { if(item.link.equals(link)) { diff --git a/src/de/podfetcher/service/FeedSyncService.java b/src/de/podfetcher/service/FeedSyncService.java index 569cfbced..5fd748351 100644 --- a/src/de/podfetcher/service/FeedSyncService.java +++ b/src/de/podfetcher/service/FeedSyncService.java @@ -4,14 +4,13 @@ * * */ -package de.podfetcher.service +package de.podfetcher.service; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.lang.Runtime; -import de.podfetcher.FeedManager; -import de.podfetcher.Feed; -import de.podfetcher.FeedHandler; +import de.podfetcher.feed.*; +import de.podfetcher.storage.DownloadRequester; import android.app.Service; import android.content.Intent; @@ -21,13 +20,15 @@ import android.content.Context; public class FeedSyncService extends Service { - private ScheduledThreadPoolExecutor executor; + private volatile ScheduledThreadPoolExecutor executor; private FeedManager manager; + private DownloadRequester requester; @Override public void onCreate() { - executor = new ScheduledThreadPoolExecutor(Runtime.availableProcessors() + 2); + executor = new ScheduledThreadPoolExecutor(Runtime.getRuntime().availableProcessors() + 2); manager = FeedManager.getInstance(); + requester = DownloadRequester.getInstance(); } @Override @@ -37,13 +38,14 @@ public class FeedSyncService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { - executor.submit(new FeedSyncThread(handleIntent(intent))); + executor.submit(new FeedSyncThread(handleIntent(intent), this)); + return START_STICKY; } /** Extracts a Feed object from the given Intent */ private Feed handleIntent(Intent intent) { Feed feed = manager.getFeed(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1)); - feed.file_url = requester.getFeedfilePath(context) + requester.getFeedfileName(feed.id); + feed.file_url = requester.getFeedfilePath(this) + requester.getFeedfileName(feed.id); return feed; } @@ -51,9 +53,11 @@ public class FeedSyncService extends Service { class FeedSyncThread implements Runnable { private Feed feed; + private FeedSyncService service; - public FeedSyncThread(Feed feed) { + public FeedSyncThread(Feed feed, FeedSyncService service) { this.feed = feed; + this.service = service; } public void run() { @@ -61,6 +65,10 @@ public class FeedSyncService extends Service { FeedHandler handler = new FeedHandler(); feed = handler.parseFeed(feed); + // Add Feeditems to the database + for(FeedItem item : feed.items) { + manager.addFeedItem(service, item); + } } } |