diff --git a/app/src/main/java/eu/faircode/email/AdapterMedia.java b/app/src/main/java/eu/faircode/email/AdapterMedia.java index f4804ab221..b36644bc7c 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMedia.java +++ b/app/src/main/java/eu/faircode/email/AdapterMedia.java @@ -282,7 +282,7 @@ public class AdapterMedia extends RecyclerView.Adapter if (MediaPlayerHelper.isPlaying(uri)) MediaPlayerHelper.stopMusic(context); else - MediaPlayerHelper.startMusic(context, uri, + MediaPlayerHelper.startMusic(context, owner, uri, new RunnableEx("player") { @Override public void delegate() { @@ -390,7 +390,6 @@ public class AdapterMedia extends RecyclerView.Adapter @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) public void onDestroyed() { Log.d(AdapterMedia.this + " parent destroyed"); - MediaPlayerHelper.stopMusic(context); AdapterMedia.this.parentFragment = null; owner.getLifecycle().removeObserver(this); } diff --git a/app/src/main/java/eu/faircode/email/MediaPlayerHelper.java b/app/src/main/java/eu/faircode/email/MediaPlayerHelper.java index c1df73b361..3ffd0c708a 100644 --- a/app/src/main/java/eu/faircode/email/MediaPlayerHelper.java +++ b/app/src/main/java/eu/faircode/email/MediaPlayerHelper.java @@ -161,7 +161,7 @@ public class MediaPlayerHelper { } } - static void startMusic(Context context, Uri uri, Runnable onCompleted) throws IOException { + static void startMusic(Context context, LifecycleOwner owner, Uri uri, Runnable onCompleted) throws IOException { synchronized (lock) { stopMusic(context); @@ -192,6 +192,14 @@ public class MediaPlayerHelper { }); MediaPlayerHelper.player.prepareAsync(); } + + owner.getLifecycle().addObserver(new LifecycleObserver() { + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + public void onDestroyed() { + MediaPlayerHelper.stopMusic(context); + owner.getLifecycle().removeObserver(this); + } + }); } static void stopMusic(Context context) {