关于SurfaceView创建时,surfaceCreated调用的问题

Android SurfaceView原理分析 首先,我们看看SurfaceView的官方介绍: Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and, if you like, its size; the SurfaceView takes care of... 阅读详情

SurfaceView预览界面写在XML文件中一般正常流程执行surfaceView,surfaceCreated可以正常调用;
但是下面两种方法surfaceCreated不会被调用,因为工作中遇到过所以记录一下。

方法一,使用handler延时加载
mHandler.postDelayed(new Thread() {
public void run() {
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
},10);
方法二,点击按钮加载
public void onClick(View view){
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

后面尝试发现使用动态加载SurfaceView可以解决这个问题,就是new一个SurfaceView对象,然后addView(mSurfaceView)。
或者可以布局里面定义两个SurfaceView先隐藏一个,需要预览的时候显示隐藏那一个。

具体原因的看见网上有人说是因为SurfaceView写在xml文件中,界面显示以后其实已经创建了,但是这时候没有添加生命周期的回调,所以后来添加了,这个接口也不会调用了。

要是有别的看法可以评论区告诉我

Android之SurfaceView简介(一) 1. SurfaceView介绍          通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。       如果需要在另外的线程绘制界面、需 阅读详情

相关推荐

Multisim 11.0的安装破解汉化步骤

15:打开注册机,选择管理员运行,默认第一项,选择生成文件路径,这里不要随意选择,要找到你安装Multisim安装路径下Shard下的License Manager路径下,否则会报错,破解失败。14:后面会出现一个更新提示,选择否,然后选择重启电脑后,先不要选择重启电脑,在这里出现了问题(可能敲击回车,默认去重启电脑了),所以我说不要重启电脑,重启破解时右下角出现这,点击否。17:重启电脑,如果前面重启过,那可以跳过重启,应用程序下找到下图所示,启动。16:点击确认覆盖,路径下生成了该文件。

qq_53260940的博客 2369

surfaceview组件的surfaceCreated()不被调用的解决方案

有时候我们有需要在native层做在surfaceview的上下文中做渲染,这个时候只是提供了一个单独什么都不做的surfaceview。 xml文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

做技术最亲切 1万+

电子产品的老化测试有哪些类型?

因此,越来越多的人在寻找“已知合格的测试连接器”,即经过测试具有可靠性和有效性的测试连接器,可以在老化测试中制定优化方法。例如对于芯片来说,不同的封装有不同的老化测试座,QFP老化测试座,QFN老化测试座等。老化测试时,专用老化电路板上的元件将承受等于或高于其额定工作条件的压力,以消除任何在额定寿命之前过早失效的元件。静态老化:在此类系统中,将测试设备安装到老化板上的插座中,然后放入老化箱中,其中每隔12至24小时施加电源和高温。动态老化:在动态老化系统中,设备以老化速度设定的最大速率进行测试。

软件技术的专栏 1839

SurfaceCreated不调用的解决方法

因为要为外面封包一个aar包,把一个摄像头的显示控件略微封装了一下,在没有封装的情况下,程序可以正常的跑起来。但是在打好包后用测试程序调用这个包,发现不显示图像。打了个日志比较了一下,发现正常的程序里是调用SurfaceCreated这个函数的,但是在aar包里却不调用这个函数。 而一些初始化的程序就放在这个函数里呢,没有它,当然图像不会显示出来。一开始怀疑是程序的原因,就把包里的许多代码都注释

fpcc的专栏 1万+

多周期路径及set_multicycle_path详解

默认情况下,每条路径都被定义为单周期,即源触发器在时钟的任一边沿启动(launch)的数据都应该由目的触发器在时钟的下一上升沿捕获(capture)。 有的设计需要在数据被捕获前提供一些额外的周期,这类路径被称为多周期路径。 一、set_multicycle_path命令 命令格式如下: set_multicycle_path .........

Jackiezhang1993的博客 4万+

MC33PT2000控制详解一:PT2000 Dev Studio工具的使用

MC33PT2000共可控制6个高低端(如控制6个高压喷油器),1个高低端(如控制高压油泵)和DC-DC模块(如升压到65V).

m0_69929716的博客 1353

surface相关函数

<br />surfaceCreated(SurfaceHolder holder):当Surface第一次创建后会立即调用该函数。程序可以在该函数中做些和绘制界面相关的初始化工作,一般情况下都是在另外的线程来绘制界面,所以不要在这个函数中绘制Surface。  <br /><br />  surfaceChanged(SurfaceHolder holder, int format, int width,int height):当Surface的状态(大小和格式)发生变化的时候会调用该函数,在su

魔戒 1575

以太网传输硬件设计大全

1.网线的介绍RJ45由插头和插做组成,也就是我们常说的网口和网线。RJ45 网线插头又称水晶头,共有八芯做成。RJ45网络传输线分为直通线、交叉线和全反线。直通线用于异种网络设备之间的互连,例如,计算机与交换机。交叉线用于同种网络设备之间的互连,例如,计算机与计算机。全反线用于超级终端与网络设备的控制物理接口之间的连接。下面将介绍一下各线的作用和区别。1.直通线:又叫正线或标准线,两端采用568B做线标准,注意两端都是同样的线序且一一对应。直通线是应用最广泛,现在最常用的线。

weixin_45365488的博客 6749

surfaceview setDisplay时IllegalArgumentException: The surface has been released

用Surfaceview + Mediaplayer做视频播放器demo过程中遇到这个问题,在网上找发现遇到这个问题的人很多,解决的方法也有人提供,但是用在我的代码上却没有效果。 自己看了下SurfaceView的文档,怀疑问题可能出在Surfaceview根本没有创建成功上,于是实现了 SurfaceHolder.Callback并且在surfaceCreated打断点追代码发现果然是在set

Mens et Manus 6995

PyMOL下载安装教程(附安装包)2025最新版(PyMOL 3.0.3)

本文详细介绍了Windows系统下PyMOL分子建模软件的安装教程。主要内容包括:提供安装包下载链接,强调需关闭杀毒软件;分步骤讲解管理员身份运行安装程序、接受协议、选择安装路径等安装流程;重点说明如何配置隐藏文件夹ProgramData中的许可证文件;最后提供基础使用技巧和常见问题解决方案。该教程适用于需要制作高质量分子结构图的科研人员和新手用户,帮助完成软件部署并顺利开展工作。

progalchemist的博客 3792

Windows下用MSYS2一键搞定Verilator安装(附国内镜像加速)

本文详细介绍了在Windows系统下,如何利用MSYS2工具和国内镜像源,快速、高效地完成Verilator的安装与配置。通过替换清华镜像源加速下载,并配合Pacman包管理器,实现近乎一键式的安装流程,有效解决了传统方法步骤繁琐、网络依赖下载慢的问题,为数字电路仿真提供了便捷的Windows环境解决方案。

weixin_29208327的博客 592

Android SurfaceView播放视频有声音无图像问题

在用SurfaceView播放视频时,如果处理不当,会出现有声音无图像的问题,主要的原因是,在调用MediaPlayer开始播放视频时,SurfaceView却还未创建成功,解决办法是判断SurfaceView创建成功后再调用MediaPlayer的播放,通过surfaceHolder的addCallBack()方法来监听surfaceCreated。 以下是2段源码,第1段有声音无图像,第...

java开发指南博客 【转载】 258

QGis软件 —— 1、Windows10下载安装QGis及插件

QGis —— 1、Windows10下载安装QGis及插件

5158

Android解决Mediaplayer+SurfaceView播放视频中的若干BUG

项目的功能很简单,单纯的播放视频,没有进度条,暂停键等,只有一个关闭按钮,当播放视频时切换到后台暂停播放,恢复到前台后接着原来的进度播放。 1.用MediaPlayer播放视频,调用MediaPlayer.start(),surfaceHolder还没初始化好,debug时指示错误的地方在 MediaPlayer.setDisplay(surfa...

u014611408的博客 5266

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android报错:java.lang.IllegalArgumentException: Surface was abandoned

背景情况 使用Camera2 Api 直接报错 报错如下: java.lang.IllegalArgumentException: Surface was abandoned at android.hardware.camera2.utils.SurfaceUtils.getSurfaceSize(SurfaceUtils.java:89) at android.hardware.camera2.params.OutputConfiguration.<init&...

n_fly的博客 1850

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android开发教程:游戏过程中按Home键后返回游戏界面

http://www.linuxidc.com/Linux/2011-11/48318.htm   症状:游戏过程中,按下Home键返回手机主菜单,再点击游戏图标试图返回游戏的时候屏幕黑的一片! 以前一直没在意只有结束线程在运行游戏,今天觉得改仔细琢磨一下这个问题了! 首先第一件事:打印Logo看看按下Home键后会调用哪些方法,结果如下: 游戏过程中按下Home后: 11-

xinxun的地盘 2523

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

解决SurfaceView闪退问题

解决SurfaceView闪退问题 让SessionActivity实现SurfaceHolder.Callback接口,这时会重写几个方法 在surfaceCreated方法中调用一个surfaceCreated方法private void init_background() { Canvas canvas = null; // 获取目标画图区域 canvas = mMainViewH

Nick的博客 3235
上一篇: Android多线程基础使用的过程
下一篇: android9.0 Unable to add window android.view.ViewRootImpl$W@642b885 -- permission denied for windo
S1om
博客等级 码龄9年 270粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S1om

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值