当前位置: 首页 > news >正文

android开发:子线程更新UI界面

        多线程操作经常希望在子线程更新界面,这样方便调试,但是,但是经常这样做程序就不对劲了,为什么呢?因为为了保证界面流畅,不允许在非UI线程直接操作界面,只能通过一些专门途径进行。另外,像网络操作这种可能阻塞的调用也不允许在UI线程执行,会触发异常。

        最标准的方案是这样的:

        在Ui线程的类里面定义Handler:

    private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 100) {String res = (String) msg.obj;binding.textviewFirst.append(res+"\n");}}};

        操作界面的是这一句:

binding.textviewFirst.append(res+"\n");

        在子线程的类里面定义Handler变量并在构造函数赋值:

    Handler handler;public myThread(Handler h) {handler = h;}

        创建线程的时候当然要用Handle作为参数。

        在子线程里调用Handler:

    private void Log(String str) {Message msg = new Message();msg.what = 100;  //消息发送的标志msg.obj = str;handler.sendMessage(msg);}

        直接写成了方法,通过Handler就可以操作界面了。

(这里是结束)

http://www.lryc.cn/news/248378.html

相关文章:

  • P9242 [蓝桥杯 2023 省 B] 接龙数列(dp+最长接龙序列+分类)
  • 网络运维与网络安全 学习笔记2023.11.29
  • Java实现通过经纬度求两个任意地点在球面上的距离
  • vscode使用插件KoroFileHeader添加注释
  • NSAttributedString设置折行方式NSLineBreakByTruncatingTail,计算高度出错,高度返回异常。
  • YOLOv8改进 | 2023 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)
  • ssm+vue的物资物流系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。
  • 纵行科技获评“汽车物流行业优秀技术装备供应商”
  • Chrome和chromedriver版本不匹配导致的UI自动化测试无法运行的问题
  • [go 面试] 深入理解进程、线程和协程的概念及区别
  • 人工智能即将彻底改变你使用计算机的方式
  • 工艺系统所管理数字化实践
  • VsCode学习
  • Javaweb之Vue组件库Element案例的详细解析
  • Bert-VITS2本地部署遇到的错误
  • 【Ambari】HDFS基于Ambari的常规运维
  • WIFI模块(esp-01s)获取网络时间与天气信息
  • 03、K-means聚类实现步骤与基于K-means聚类的图像压缩(2)
  • Condition 源码解析
  • acwing算法基础之数学知识--求组合数进阶版
  • 基础算法:大数除以除以13
  • 软件版本区分
  • Redis高可用之主从复制及哨兵模式
  • 代理模式,dk动态代理,cglib动态代理
  • Vue2系列 -- 组件自动化全局注册(require.context)
  • 【华为OD题库-038】支持优先级的对列-java
  • python爱心代码高级
  • 基于SSM+Vue的社区共享食堂管理系统
  • MYSQL基础知识之【修改数据,删除数据】
  • 【机器学习】交叉验证 Cross-validation