代码之家  ›  专栏  ›  技术社区  ›  Samuele Pontremoli

外置播放器setplaywhenready崩溃

  •  0
  • Samuele Pontremoli  · 技术社区  · 7 年前

    我想我在我的球员课上有些问题。我通过嵌入在应用程序中的崩溃报告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 回复  |  直到 7 年前
        1
  •  0
  •   Samuele Pontremoli    7 年前

    因为我没有答案,所以我自己检查直到找到问题的原因。 崩溃的原因是播放器在输入某种错误后变为空(在我的例子中是与连接相关的问题)。 由于控件视图是由exo本身处理的,所以崩溃发生在库内部类中,我认为播放器被内部例程设置为null。当exoplayer进入错误状态时 Player.DefaultEventListener 我们附加到它的内容进入回调 onPlayerError(e: ExoPlaybackException?) 是的。 在这里,我处理了重新创建播放器并将流恢复到上一个搜索位置(如果存在)或开始位置的错误。

    推荐文章