diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java index 765b2a7634..a0ca448de7 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -304,7 +304,6 @@ import java.io.IOException; // Restore the interrupted status. Thread.currentThread().interrupt(); } - internalPlaybackThread.quit(); } public Looper getPlaybackLooper() { @@ -840,6 +839,7 @@ import java.io.IOException; resetInternal(true); loadControl.onReleased(); setState(Player.STATE_IDLE); + internalPlaybackThread.quit(); synchronized (this) { released = true; notifyAll(); diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java index b56c299e78..70c0f84051 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java @@ -212,9 +212,17 @@ public class FakeSimpleExoPlayer extends SimpleExoPlayer { } @Override + @SuppressWarnings("ThreadJoinLoop") public void release() { stop(); playbackThread.quitSafely(); + while (playbackThread.isAlive()) { + try { + playbackThread.join(); + } catch (InterruptedException e) { + // Ignore interrupt. + } + } } @Override