从网上看了很多资料,发现好多都是错误的,所以今天特意更新这个问题的原因,
在播放mediaPlayer.start()时SurfaceHolder没有来的及调用onCreate()方法创建view,导致holder没有成功加载,因为mediaplayer是在SurfaceHolder上面播放的,所以才抛出播放异常。贴出正确代码

 mSurfaceView = (SurfaceView) findViewById(R.id.surface_view);AssetManager assetManager = getAssets();try {mDescriptor = assetManager.openFd("test1.mp4");} catch (IOException e) {e.printStackTrace();}mediaPlayer = new MediaPlayer();mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {Log.d(TAG, "surfaceCreated=" + System.currentTimeMillis());try {mediaPlayer.setDataSource(mDescriptor.getFileDescriptor(), mDescriptor.getStartOffset(), mDescriptor.getLength());mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置播放声音类型mediaPlayer.prepare();mediaPlayer.setDisplay(mSurfaceView.getHolder());} catch (IOException e) {e.printStackTrace();}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {Log.d(TAG, "surfaceChanged=" + System.currentTimeMillis());}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {Log.d(TAG, "surfaceDestroyed=" + System.currentTimeMillis());}});mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {Log.d(TAG, "onPrepared=" + System.currentTimeMillis());mediaPlayer.start();}});mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {Log.d(TAG, " times onCompletion=" + System.currentTimeMillis());mediaPlayer.release();}});}

medialplayer播放的生命周期:

surfaceCreated—-SurfaceHolder被创建,只要在SurfaceHolder被创建的时候做设置就可以避免The surface has been released问题。
surfaceChanged——SurfaceHolder发生改变
onPrepared—-mediaPlayer准备ok
onCompletion—–mediaPlayer播放完成
surfaceDestroyed—–SurfaceHolder被销毁。
有什么问题请各位指出,谢谢!

The surface has been released错误原因(亲测有效)相关推荐

  1. java.lang.IllegalStateException Unable to find a @SpringBootConfiguration错误解决方案(亲测)

    问题描述: java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @C ...

  2. Communications link failure错误(亲测有效)

    当时我的报了这个错误,我就从网上搜了解决这类问题的办法,找到的大多数是说:MySQL服务器默认的"wait_timeout"是8小时,数据库超过8小时没用,链接超时了. 让修改这两 ...

  3. SpringBoot集成Kafka集群并实现接收_发送消息操作_以及常见错误_亲测---Kafka工作笔记005

    1.注意这个过程中,很重要的是:版本,springboot的版本和spring-kafka的版本要对应起来. 2.我现在发现两个版本是没问题的,一会说明 3.还要注意yml资源文件,或者propert ...

  4. 固态硬盘开机慢原因亲测

    1.刚替换的特别快开机20秒,过一个月开机2分钟都有,每次,然后发现电脑管家 禁用了系统显卡相关:

  5. Fluent最全complied错误原因分析:Error: The UDF library you are trying to load (libudf) is not compiled for

    在ansys fluent 19.2中comple udf文件时,始终出现如下错误.最终问题解决,整理了一下相关解决方法.Error: The UDF library you are trying t ...

  6. 【亲测有效!!!】解决git did not exit cleanly (exit code 1) 错误

    [亲测有效!!!]解决git did not exit cleanly (exit code 1) 在操作之前请确认好是不是同一种错误,谨慎使用. 1.在git代码时出现以下问题 原因:之前上传过代码 ...

  7. Lua(Codea) 中 table.insert 越界错误原因分析

    2019独角兽企业重金招聘Python工程师标准>>> Lua(Codea) 中 table.insert(touches, touch.id, touch) 越界错误原因分析 背景 ...

  8. R语言glm模型预测(predict)过程及Error in eval(predvars, data, env) 错误原因

    R语言glm模型预测(predict)过程及Error in eval(predvars, data, env) 错误原因 目录 R语言glm模型预测(predict)过程及Error in eval ...

  9. “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法

    用SQLite时,可能会出现这样的错误. 原因可能是环境变量PATH没有配置或配置不正确.应该把adb.exe 所在目录加入到PATH环境变量.例如:C:\Program Files\android- ...

  10. ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....

    [标题]             ASP.NET常见错误,原因及解决方法[错误提示]    异常详细信息: System.Net.WebException: 请求因 HTTP 状态 401 失败:Un ...

最新文章

  1. win10安装spacemacs
  2. whereis php,Linux命令教程之比较搜索命令whereis与which的区别
  3. mysql1064 at line 6,MySQL错误1064语法,但一切似乎都很好
  4. 【bzoj 3173】[Tjoi2013]最长上升子序列
  5. QuickStart系列:docker部署之Gitlab本地代码仓库
  6. currenthashmap如何实现线程安全_Java的List如何实现线程安全?
  7. linux上用selenium登录新浪微博,获取用户关注的用户id
  8. word设置背景色为护眼的绿色
  9. vb/vb.net开发技巧荟萃(九)
  10. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校相当于中国什么等级的大学?...
  11. Python自学(三)
  12. 机器学习项目实战(七) 机器学习预测股价
  13. 2DPCA、(2D)2PCA公式推导
  14. QEMU imx6ul开发板环境搭建
  15. python 比较两种包装的大米的价钱
  16. 服务器存储的作用和用途,存储服务器有四大作用你都清楚吗?
  17. 年收入过10亿美元,Veeam看好云数据管理
  18. 计算机 办公软件应用包含哪些,计算机办公软件应用参考文献外国 计算机办公软件应用专著类参考文献有哪些...
  19. java编写程序实现键盘钢琴,运用键盘事件、鼠标事件
  20. Java8 将List转换为用逗号隔开的字符串

热门文章

  1. psp java运行环境_手机模拟器?PSP的Java环境PSPKVM 0.0.7发布
  2. Verilog设计参数化的译码器与编码器,以及设计4位格雷码计数器
  3. PHP 身份证验证方法
  4. css中字体的大小怎么设置,css样式中怎么设置字体大小
  5. 文言文代码算什么?跟着九章算术学Python编程才厉害
  6. Idea快捷键大全(比较全的)
  7. 从googleDriver下载大数据集
  8. linux装流量宝,流量宝下载_流量宝官方APP手机最新版本下载安装 - 风云下载
  9. 线性系统与非线性系统
  10. WIN11映射NAS网络驱动器提示 用户名和密码错误