Android TV应用每小时自动重启求助(ExoPlayer r2.15.0播放HLS)
排查思路
一、先解决日志缺失问题
- 提前执行
adb logcat -d -v time > log.txt命令,把日志输出到本地文件,就算adb断开,断开前的日志也会保存在文件里,重点看重启前30秒的内容 - 开启电视本地日志存储:部分Sony Bravia电视在开发者选项里支持把应用日志保存到USB设备,去系统设置里找相关开关
- 在应用里集成本地日志库(比如Timber),把ExoPlayer播放状态切换、Activity生命周期这些关键流程的日志写入应用私有目录,重启后用
adb pull导出查看
二、排查设备兼容性问题
- 确认Sony Bravia的系统版本,排查是否存在Android TV系统层面针对SDK27、ExoPlayer r2.15.0的适配bug
- 测试同型号电视上的其他应用是否有类似重启/退栈问题,排除系统本身稳定性问题
- 临时关闭硬件加速(修改
android:hardwareAccelerated="false"),或者把ExoPlayer的渲染从SurfaceView换成TextureView,看问题是否复现
三、聚焦ExoPlayer相关问题
- 检查HLS流的编码格式、码率是否符合Sony Bravia的支持规范,部分电视对特定编码的HLS流兼容性差,可能触发底层崩溃
- 把ExoPlayer升级到r2.15.x的最新补丁版,或者尝试更高稳定版本,排查是否是已知的播放器bug导致崩溃
- 在
Player.EventListener的onPlayerError回调里记录详细错误信息,包括错误码、异常堆栈 - 监控播放时的内存占用,ExoPlayer播放HLS时如果内存泄漏或占用过高,可能触发系统OOM杀死应用,记录播放前后的内存变化数据
四、排查Activity栈与应用逻辑
- 检查应用里有没有定时重启的逻辑,比如后台服务的定时任务是否误触发了应用重启
- 核对播放界面的Activity启动模式,确认是否因栈管理异常导致退栈
- 检查应用权限配置,尤其是后台运行权限,部分Android TV设备会限制后台应用运行时长,导致应用被系统杀死重启
- 如果集成了崩溃上报工具,查看是否有捕获到崩溃信息,这类工具通常能记录adb没抓到的异常
五、系统层面排查
- 检查电视的电源管理设置,是否开启了每小时自动清理后台应用的功能
- 通过
adb shell执行logcat -b system查看系统日志,系统层面会记录应用被杀死的原因,比如OOM、ANR、系统强制清理
内容的提问来源于stack exchange,提问作者Antediluvian
相关产品推荐
相关产品推荐

