summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Oeh <daniel@daniel-pc.(none)>2011-12-24 20:19:31 +0100
committerDaniel Oeh <daniel@daniel-pc.(none)>2011-12-24 20:19:31 +0100
commit53daf91337a70859edae9c3cfb9ec2a8ea3d6229 (patch)
tree71909c09a4be19259c45a31033ecbf20131980af
parent1f6bcb3659def2c2160477adb3d494a1030e9511 (diff)
downloadAntennaPod-53daf91337a70859edae9c3cfb9ec2a8ea3d6229.zip
Implemented run-Method in FeedSyncThread
-rw-r--r--AndroidManifest.xml11
-rw-r--r--src/de/podfetcher/feed/FeedManager.java13
-rw-r--r--src/de/podfetcher/service/FeedSyncService.java26
3 files changed, 29 insertions, 21 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1bda344bb..429d80499 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.podfetcher"
android:versionCode="1"
- android:versionName="1.0" >
+ android:versionName="1.0" >
<!-- <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" /> -->
<uses-permission android:name="android.permission.INTERNET" />
@@ -12,22 +12,21 @@
<application
android:icon="@drawable/ic_launcher"
- android:label="@string/app_name" >
+ android:label="@string/app_name" >
<activity
android:label="@string/app_name"
- android:name=".PodfetcherActivity" >
- <intent-filter >
+ android:name=".PodfetcherActivity" >
+ <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:enabled="true" android:name=".DownloadService" />
- <service android:enabled="true" android:name=".FeedSyncService"
+ <service android:enabled="true" android:name=".FeedSyncService" >
<intent-filter>
<action android:name="action.de.podfetcher.storage.feed_download_completed"></action>
</intent-filter>
</service>
</application>
-
</manifest>
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);
+ }
}
}