Fix player resume

This commit is contained in:
Stypox 2019-08-11 22:10:05 +02:00
parent a64f520644
commit 5191907af0
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23
1 changed files with 7 additions and 8 deletions

View File

@ -187,6 +187,7 @@ public abstract class BasePlayer implements
protected MediaSessionManager mediaSessionManager;
private boolean isPrepared = false;
private Disposable stateLoader;
//////////////////////////////////////////////////////////////////////////*/
@ -283,16 +284,14 @@ public abstract class BasePlayer implements
) {
simpleExoPlayer.seekTo(playQueue.getIndex(), queue.getItem().getRecoveryPosition());
return;
} else if (intent.getBooleanExtra(RESUME_PLAYBACK, false) && isPlaybackResumeEnabled()) {
final PlayQueueItem item = queue.getItem();
if (item != null && item.getRecoveryPosition() == PlayQueueItem.RECOVERY_UNSET && isPlaybackResumeEnabled()) {
final Disposable stateLoader = recordManager.loadStreamState(item)
if (item != null && item.getRecoveryPosition() == PlayQueueItem.RECOVERY_UNSET) {
stateLoader = recordManager.loadStreamState(item)
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> {
if (simpleExoPlayer == null) return; // doFinally called while closing
initPlayback(queue, repeatMode, playbackSpeed, playbackPitch, playbackSkipSilence,
/*playOnInit=*/true);
})
.doFinally(() -> initPlayback(queue, repeatMode, playbackSpeed, playbackPitch, playbackSkipSilence,
/*playOnInit=*/true))
.subscribe(
state -> queue.setRecovery(queue.getIndex(), state.getProgressTime()),
error -> {
@ -334,13 +333,13 @@ public abstract class BasePlayer implements
simpleExoPlayer.removeListener(this);
simpleExoPlayer.stop();
simpleExoPlayer.release();
simpleExoPlayer = null;
}
if (isProgressLoopRunning()) stopProgressLoop();
if (playQueue != null) playQueue.dispose();
if (audioReactor != null) audioReactor.dispose();
if (playbackManager != null) playbackManager.dispose();
if (mediaSessionManager != null) mediaSessionManager.dispose();
if (stateLoader != null) stateLoader.dispose();
if (playQueueAdapter != null) {
playQueueAdapter.unsetSelectedListener();