summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/activity
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2016-03-16 20:55:19 +0100
committerMartin Fietz <Martin.Fietz@gmail.com>2016-03-16 20:55:19 +0100
commitdd61b065b4b2720ad625401c0d86f3c278f738b0 (patch)
treed0864203170b639736caa61246492b4650571895 /app/src/main/java/de/danoeh/antennapod/activity
parentb152fcabbe52399106df32e5782ac957e93fc4a4 (diff)
parent31ba5a571cdc3036a31020f0ecce3735c72023a6 (diff)
downloadAntennaPod-dd61b065b4b2720ad625401c0d86f3c278f738b0.zip
Merge pull request #1763 from mfietz/issue/1762-audioplayer-leak
Audioplayer: Prevent leak
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java30
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java1
2 files changed, 27 insertions, 4 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
index b4e8d4d71..e90681931 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
@@ -103,6 +103,7 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop()");
+ pagerAdapter.setController(null);
if(subscription != null) {
subscription.unsubscribe();
}
@@ -112,9 +113,13 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
@Override
public void onDestroy() {
+ Log.d(TAG, "onDestroy()");
super.onDestroy();
// don't risk creating memory leaks
+ drawerLayout = null;
navAdapter = null;
+ navList = null;
+ navDrawer = null;
drawerToggle = null;
pager = null;
pagerAdapter = null;
@@ -171,6 +176,7 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
if(pagerAdapter != null && controller != null && controller.getMedia() != media) {
media = controller.getMedia();
pagerAdapter.onMediaChanged(media);
+ pagerAdapter.setController(controller);
}
EventDistributor.getInstance().register(contentUpdate);
@@ -258,7 +264,8 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
});
pager = (ViewPager) findViewById(R.id.pager);
- pagerAdapter = new AudioplayerPagerAdapter(getSupportFragmentManager());
+ pagerAdapter = new AudioplayerPagerAdapter(getSupportFragmentManager(), media);
+ pagerAdapter.setController(controller);
pager.setAdapter(pagerAdapter);
CirclePageIndicator pageIndicator = (CirclePageIndicator) findViewById(R.id.page_indicator);
pageIndicator.setViewPager(pager);
@@ -537,10 +544,16 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
void onMediaChanged(Playable media);
}
- private class AudioplayerPagerAdapter extends FragmentStatePagerAdapter {
+ private static class AudioplayerPagerAdapter extends FragmentStatePagerAdapter {
- public AudioplayerPagerAdapter(FragmentManager fm) {
+ private static final String TAG = "AudioplayerPagerAdapter";
+
+ private Playable media;
+ private PlaybackController controller;
+
+ public AudioplayerPagerAdapter(FragmentManager fm, Playable media) {
super(fm);
+ this.media = media;
}
private CoverFragment coverFragment;
@@ -548,6 +561,7 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
private ChaptersFragment chaptersFragment;
public void onMediaChanged(Playable media) {
+ this.media = media;
if(coverFragment != null) {
coverFragment.onMediaChanged(media);
}
@@ -559,6 +573,13 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
}
}
+ public void setController(PlaybackController controller) {
+ this.controller = controller;
+ if(chaptersFragment != null) {
+ chaptersFragment.setController(controller);
+ }
+ }
+
@Nullable
public ChaptersFragment getChaptersFragment() {
return chaptersFragment;
@@ -580,7 +601,8 @@ public class AudioplayerActivity extends MediaplayerActivity implements NavDrawe
return itemDescriptionFragment;
case POS_CHAPTERS:
if(chaptersFragment == null) {
- chaptersFragment = ChaptersFragment.newInstance(media, controller);
+ chaptersFragment = ChaptersFragment.newInstance(media);
+ chaptersFragment.setController(controller);
}
return chaptersFragment;
default:
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index 48ed270cb..090085414 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -260,6 +260,7 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
Log.d(TAG, "onStop()");
if (controller != null) {
controller.release();
+ controller = null; // prevent leak
}
}