最近在做一个播放器,需要实现一个从小屏切换到全屏的效果,我用的是TextureView + MediaPlayer 的方式去实现,当需要切换成全屏时,我在 TextureView 的 onSurfaceTextureDestroyed 方法中将MediaPlayer的 setSurface 方法置成了NULL,然后打算在屏幕切换完成后,即在 onSurfaceTextureAvailable 方法中重新给MediaPlayer设置一个Surface, 但是这样却带来一个问题:

每次打印完 E/BufferQueueProducer: [SurfaceTexture-0-25503-6] cancelBuffer: BufferQueue has been abandoned 后播放器都会dump掉,然后就报了一个错误:E/MediaPlayer: error(1, -19), 最开始我怀疑是Player在Playing状态下不能设置setSurface为NULL,后来实际尝试了下,是可以这么做的,百思不解的情况下求教了一下万能的Google, 结果在这篇博客中找到了答案:

https://blog.csdn.net/YoungHong1992/article/details/84324965

结合了下自己遇到的问题,大概明白了问题所在:当我的SurfaceTexture所关联的View从屏幕中remove掉了之后,这个SurfaceTexture也被回收掉了,所以只需要保证这个SurfaceTexture不被回收掉就行,按照这篇博客的内容,将SurfaceTexture提升为成员变量,问题解决。

一个相关联的StackOverflow: https://stackoverflow.com/questions/23807086/surfacetexture-has-been-abandoned

最新文章

  1. jsonp 使用总结
  2. C#基础入门一
  3. Android仿微信界面
  4. Spark - RDD(弹性分布式数据集)
  5. 代码静态分析工具--PMD,Findbugs,CheckStyle
  6. 每天一个小算法(Shell Sort2)
  7. 如果iis的配置文件 applicationHost.config坏掉了, 会在 C:\inetpub\history\ 中存储历史备份。复制过去还原就可以了-摘自网络
  8. ios专题 - 委托模式实现
  9. 常用Content-type汇总
  10. 《Java程序员面试笔试宝典》之 什么是AOP
  11. Ngui _CD技能特效
  12. 项目之软件project(我专业四年都未曾知道这四个字的含义,几句话便懂了)
  13. fbset视频参数说明
  14. Samples for Parallel Programming with the .NET Framework
  15. Python创建容器和集合之源码分析
  16. CSS 剩余宽度和高度完全填充
  17. Linux学习--线程控制
  18. .net core 使用MD5加密解密字符串
  19. tomcat是怎么找到项目lib目录下的jar包的,求大神解答
  20. zw·10倍速大数据与全内存计算

热门文章

  1. 第四篇:python基础之杂货铺
  2. 异常-No suppression parameter found for notification
  3. 用js刷剑指offer(二叉搜索树的后序遍历序列)
  4. logstash可以考虑在项目中用起来
  5. TODO Android +jacoco的增量覆盖率测试和一些概念
  6. python 实现定时任务
  7. 用vue开发一个所谓的数独
  8. Vue 获取dom元素中的自定义属性值
  9. js中int和string数据类型互相转化实例
  10. myeclipse不同版本共存破解办法