Exoplayer setPlayWhenReady вылет - PullRequest
       19

Exoplayer setPlayWhenReady вылет

0 голосов
/ 03 сентября 2018

Я думаю, что у меня есть проблема где-то в моем классе игрока. Я заметил это через SDK с отчетом о сбое, встроенный в мое приложение. Я пока не публикую свой код, поскольку трассировка стека ошибки, похоже, не связана с каким-либо моим кодом. Но я могу ошибаться (и, конечно же, я). Вот след стека аварии:

com.google.android.exoplayer2.DefaultControlDispatcher.dispatchSetPlayWhenReady
DefaultControlDispatcher.java - line 28
java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.android.exoplayer2.Player.setPlayWhenReady(boolean)' on a null object reference
com.google.android.exoplayer2.DefaultControlDispatcher.dispatchSetPlayWhenReady DefaultControlDispatcher.java:28
com.google.android.exoplayer2.ui.PlayerControlView$ComponentListener.onClick PlayerControlView.java:1116
android.view.View.performClick View.java:5265
android.view.View$PerformClick.run View.java:21534
android.os.Handler.handleCallback Handler.java:815
android.os.Handler.dispatchMessage Handler.java:104
android.os.Looper.loop Looper.java:207
android.app.ActivityThread.main ActivityThread.java:5896
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run ZygoteInit.java:789
com.android.internal.os.ZygoteInit.main ZygoteInit.java:679

Что я понял, так это то, что в плохих условиях соединения проигрыватель останавливается и показывает контрольный вид (я смог повторить это поведение). Когда я нажимаю кнопку воспроизведения, вот что происходит.

Спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

Поскольку у меня не было ответов, я проверял сам, пока не нашел причину проблемы. Сбой произошел из-за того, что игрок стал нулевым после ввода какой-либо ошибки (в моем случае это была проблема, связанная с подключением). Поскольку управляющее представление обрабатывается самим Exo, сбой происходил во внутренних классах библиотеки, и я предполагаю, что проигрыватель был установлен в null из-за внутренних процедур. Когда Exoplayer входит в состояние ошибки, Player.DefaultEventListener, который мы к нему подключили, входит в обратный вызов onPlayerError(e: ExoPlaybackException?). Здесь я обработал ошибку, воссоздав проигрыватель и возобновив поток до предыдущей позиции поиска (если имеется) или до начала.

...