summaryrefslogtreecommitdiff
path: root/src/de/danoeh
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh')
-rw-r--r--src/de/danoeh/antennapod/activity/FeedItemlistActivity.java22
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemlistFragment.java9
2 files changed, 27 insertions, 4 deletions
diff --git a/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java b/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java
index 98695429c..981379f6a 100644
--- a/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java
+++ b/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java
@@ -49,6 +49,8 @@ public class FeedItemlistActivity extends ActionBarActivity {
private ItemlistFragment filf;
private ExternalPlayerFragment externalPlayerFragment;
+ private AsyncTask<?, ?, ?> currentLoadTask;
+
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(UserPreferences.getTheme());
@@ -70,7 +72,10 @@ public class FeedItemlistActivity extends ActionBarActivity {
}
- private void loadData(long id) {
+ private synchronized void loadData(long id) {
+ if (currentLoadTask != null) {
+ currentLoadTask.cancel(true);
+ }
AsyncTask<Long, Void, Feed> loadTask = new AsyncTask<Long, Void, Feed>() {
@Override
@@ -81,6 +86,12 @@ public class FeedItemlistActivity extends ActionBarActivity {
}
@Override
+ protected void onCancelled(Feed feed) {
+ super.onCancelled(feed);
+ if (AppConfig.DEBUG) Log.d(TAG, "load task was cancelled");
+ }
+
+ @Override
protected void onPostExecute(Feed result) {
super.onPostExecute(result);
if (result != null) {
@@ -103,6 +114,7 @@ public class FeedItemlistActivity extends ActionBarActivity {
}
}
};
+ currentLoadTask = loadTask;
loadTask.execute(id);
}
@@ -113,6 +125,14 @@ public class FeedItemlistActivity extends ActionBarActivity {
}
@Override
+ protected void onStop() {
+ super.onStop();
+ if (currentLoadTask != null) {
+ currentLoadTask.cancel(true);
+ }
+ }
+
+ @Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
if (feed != null) {
diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
index 282bb4d5c..436210a70 100644
--- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
@@ -125,21 +125,24 @@ public class ItemlistFragment extends ListFragment {
}
@Override
- public void onDestroyView() {
- super.onDestroyView();
+ public void onStop() {
+ super.onStop();
EventDistributor.getInstance().unregister(contentUpdate);
if (currentLoadTask != null) {
currentLoadTask.cancel(true);
}
}
- protected void loadData() {
+ protected synchronized void loadData() {
final long feedId;
if (feed == null) {
feedId = getArguments().getLong(ARGUMENT_FEED_ID);
} else {
feedId = feed.getId();
}
+ if (currentLoadTask != null) {
+ currentLoadTask.cancel(true);
+ }
AsyncTask<Long, Void, Feed> loadTask = new AsyncTask<Long, Void, Feed>(){
private volatile List<Long> queueRef;