解决安卓UI刷新卡屏,只显示最后一处刷新的问题
---恢复内容开始---
错误1
安卓的机制决定了只有UI线程(也就是主线程)才能更新UI界面
否则会导致UI界面混乱的问题
这就说明了在new Thread中直接showImage是会报“出现非主线程更新界面”的错误
错误2
尝试在一次点击事件中多次更新UI界面 或者 妄想在死循环中一直更新UI界面,会导致UI堵塞,如下图所示

错误3
这里正解是通过Android的Handler机制,在Runnable 中持续跟新UI,但是想用死循环在Runnable中的run 方法里持续显示,会出现错误2的问题
正解
1.创建全局变量 public Handler handler = new Handler();
2.在需要更新UI 界面的地方创建一个线程
new Thread(){
@Override
public void run(){//*********}
}
3.在run地方用handler的post方法,注意post()里应该传入一个Runnable对象,我们在创建时可以重新创建
4.在Runnable中重写run方法,在run方法里添加showImage,点击运行,完成了在线程跟新UI界面的操作
5.如果想持续更新UI线程,在showImage()后面添加 handler.postDelayed()方法, 方法中第一个参数传入的是Runnable对象,第二个为延时时长
这里我的Runnable对象传入的this,就完成了持续更新界面的操作
具体代码如下
button_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
isRunning = true;
JNImethod(outMat1.getNativeObjAddr(),outMat2.getNativeObjAddr());
new Thread(){
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run()
{ showMatImage(outMat1, outMat2); //执行时间在4ms左右
handler.postDelayed(this, 100);
}
});
}
}.start();
}}); 我是在一个"开始"点击事件里添加的持续跟新UI界面的操作
我是通过慕课网上的视频学习做成的 传送门:https://www.imooc.com/learn/267
能力有限,有些地方表述不当,希望大家不吝赐教
---恢复内容结束---
解决安卓UI刷新卡屏,只显示最后一处刷新的问题的更多相关文章
- 安卓 apk 嵌入H5页面只显示部分
安卓 apk 嵌入H5页面只显示部分(有空白页出现) 解决方案 没有加载的是js部分,需要在安卓那边加上一串代码 webView.getSetting().setDomStorageEnabled(t ...
- 安卓开发ScrollView嵌套ListView只显示一行
在用列表控件做一个“更多功能”的界面的时候 <?xml version="1.0" encoding="utf-8"?> <ScrollVie ...
- EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题
在上一篇里,EmguCV(OpenCV)实现高效显示汉字及叠加 实现了视频叠加及显示,但存在问题,就是 Emgu.CV.UI.ImageBox及C# picturebox显示图片时都会出现闪烁,尤其 ...
- win10 开机黑屏只显示鼠标
最靓,win10开机黑屏,网上试了很多办法没有解决,花了3个小时终于解决了,现在介绍一下方法. 首先,在黑屏模式下进入任务管理器,文件=>运行新任务=>Explorer.exe 此时桌面已 ...
- Linux中OBS在Wayland环境下黑屏只显示鼠标的应对措施
本文写于2018-02-10.截至到此文完成时,没有已知的方法可以让OBS在Wayland环境下正常工作. 解决方法 放弃使用Wayland,改用X Window 在Wanyland上录制屏幕,可以使 ...
- WPF Popup全屏 弹出方法。解决只显示75%的问题。
WPF Popup全屏 弹出方法.解决只显示75%的问题. WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x ...
- 解决:mui 的 选项卡 + 下拉刷新 功能,在其中嵌入 iframe 后,在 iphone 的情况下,iframe 的内容不能滚动,只显示第一屏内容。
我所遇到的情况是,使用 mui 的 选项卡 + 下拉刷新 功能时,其中有2个页面是嵌入了别的网站的页面,而别个几个是通过 ajax 加载本网站的数据.然后 在其中嵌入 iframe 后,在 iphon ...
- win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法
如上图所示,桌面或其他大部分地方点击右键菜单,都只显示一个白色框,鼠标移上去才有菜单项看,并且效果很丑 解决办法: 计算机-右键-属性-高级-性能-设置-视觉效果-淡入淡出或滑动菜单到视图,将其前面的 ...
- ScrollView中嵌套GridView,ListView只显示一行的解决办法
转载:http://blog.csdn.net/luohai859/article/details/39347583 关于为什么只显示一行,个人理解是:如果单独使用GridView和ListView, ...
随机推荐
- excel将百分比数据转为数值格式
由于于原给定的数据是百分比格式的, 所以先在excel中将数据格式改为数值 修改步骤: 单纯更改单元格格式为数值没用,先在空白单元格输入数值格式的1,复制该数字,选中要转换格式的数据, 右键 ---- ...
- 20.0-uC/OS-III移植
1.CPU移植要求: 1) 处理器有对应的能产生可重入代码的C编译器2) 处理器支持中断且能提供周期性的中断(通常介于10到1000Hz之间). 3) 可以关中断和开中断4) 处理器支持存储和载入堆栈 ...
- mysql 远程登录
mysql -h 192.168.5.116 -P 3306 -u root -p123456
- 20175211 2018-2019-2 《Java程序设计》第四周学习总结
目录 教材学习内容总结 第五章 子类与继承 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 其他(感悟.思考等,可选) 学习进度条 参考资料 教材学习内容总结 第五 ...
- Filte过滤器
过滤器 , 其实就是对客户端发出来的请求进行过滤. 浏览器发出, 然后服务器派servlet处理. 在中间就可以过滤, 其实过滤器起到的是拦截的作用.生活中的过滤器例如:门禁,你有门卡才能过去,没有 ...
- JAVA的值传递问题
为什么 Java 中只有值传递? 首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语.按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call ...
- Django的安装
##pip pip是Python的包管理工具,用于快速安装配置所需要的拓展包,能够很好的解决包之间的依赖关系 当前ubuntu 系统上有两个Python环境,使用pip3 是指定Python3的环境 ...
- oracle 死锁
oracle 死锁 --查用户名,查客户端机器 SELECT distinct s.username,s.MACHINE, s.sid||','||s.serial# FROM gv$session ...
- 像素与DPI之间的关系
先说像素.像素是电子图像组成的基本单位,将图像放大数倍,会发现图像是由一个个“小色块”紧密排列组成的,每一个“小色块”就是一个像素点. 也就是说,每个图像都是由n多个像素点组成. 再说分辨率.所谓分辨 ...
- 剑指offer(47)求1+2+3+...+n
题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 题目分析 不能用乘除也就不能用公示了,并且不能 ...