diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/de/danoeh/antennapod/activity/FeedItemlistActivity.java | 22 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/fragment/ItemlistFragment.java | 9 |
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; |