看到的唯一崩溃信息:
E/SurfaceView: Exception configuring surface java.lang.NullPointerException: Attempt to read from field 'android.view.Surface android.view.ViewRootImpl.mSurface' on a null object reference
at android.view.SurfaceView.setParentSpaceRectangle(SurfaceView.java:838)
at android.view.SurfaceView.surfacePositionLost_uiRtSync(SurfaceView.java:958)
这个报错貌似一直是存在的,不清楚 sdk 在切换横竖屏时做了什么。
由于App使用的官方的夜间模式方案,而这个问题出现的情景是:夜间模式下,对<video/>进行切换横屏操作,发生 Crash。而普通模式下,切换横屏并不会发生Crash。
所以说,聚焦到了夜间模式时,我们干了什么。
在官方文档中,涉及到接入的并没有对夜间模式方案进行特殊的声明,所以说,我们默认认为夜间模式并不会对x5造成影响。
在文档中提到
兼容视频播放:
享受页面视频的完整播放体验需要做如下声明:
页面的Activity需要声明android:configChanges="orientation|screenSize|keyboardHidden"
这个声明是并不会影响到夜间模式切换,我们需要加上一个声明,最终方案是加上uiMode: 用户界面模式发生了变化 — 这可能是因用户将设备放入桌面/车载基座或夜间模式发生变化所致。 请参阅 UiModeManager。
最终解决方案: android:configChanges="orientation|keyboardHidden|keyboard|screenSize|uiMode"