Description
So, I just updated from version
implementation 'com.google.android.exoplayer:exoplayer-core:2.8.1'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.8.1'
to version
implementation 'com.google.android.exoplayer:exoplayer-core:2.8.4'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.8.4'
And on most devices and emulators application started crashing, even tho it's still works fine on my main OnePlus 3 Android 8.0.
Exception occurs once I add an additional data source(-s) to ConcatenatingMediaSource in order to start preloading process of the next clips.
Here is first exception:
09-14 10:46:49.718 E/ExoPlayerImplInternal: Internal runtime error.
java.lang.IllegalStateException
at com.google.android.exoplayer2.util.Assertions.checkState(Assertions.java:81)
at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker.start(DefaultHlsPlaylistTracker.java:99)
at com.google.android.exoplayer2.source.hls.HlsMediaSource.prepareSourceInternal(HlsMediaSource.java:373)
at com.google.android.exoplayer2.source.BaseMediaSource.prepareSource(BaseMediaSource.java:137)
at com.google.android.exoplayer2.source.CompositeMediaSource.prepareChildSource(CompositeMediaSource.java:109)
at com.google.android.exoplayer2.source.ConcatenatingMediaSource.addMediaSourceInternal(ConcatenatingMediaSource.java:554)
at com.google.android.exoplayer2.source.ConcatenatingMediaSource.handleMessage(ConcatenatingMediaSource.java:468)
at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:861)
at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:829)
at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:811)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:328)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)`
And here is the second one, that happens right after the first "internal" one:
`09-14 10:46:49.860 E/AndroidRuntime: FATAL EXCEPTION: ExoPlayerImplInternal:Handler
Process: media.soundstream.soundstream, PID: 8193
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.upstream.Loader.release()' on a null object reference
at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker.stop(DefaultHlsPlaylistTracker.java:113)
at com.google.android.exoplayer2.source.hls.HlsMediaSource.releaseSourceInternal(HlsMediaSource.java:404)
at com.google.android.exoplayer2.source.BaseMediaSource.releaseSource(BaseMediaSource.java:150)
at com.google.android.exoplayer2.source.CompositeMediaSource.releaseSourceInternal(CompositeMediaSource.java:65)
at com.google.android.exoplayer2.source.ConcatenatingMediaSource.releaseSourceInternal(ConcatenatingMediaSource.java:423)
at com.google.android.exoplayer2.source.BaseMediaSource.releaseSource(BaseMediaSource.java:150)
at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:802)
at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:731)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:353)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
I checked out the source code of DefaultHlsPlaylistTracker and I am kinda confused. The only place where initialPlaylistLoader sets to non null value is.. right after it gets checked on being non-null and Exception gets thrown.
Thank you in advance.