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

Android --- Handler的用法,子线程中怎么切线程进行更新UI

我们都知道耗时操作需要放到子线程去操作,那我们可以new一个Thread来进行耗时操作,但是更新UI需要在主线程,就涉及到线程之间的切换,该如何处理呢?如下:


你可以通过使用 Handler 与 Looper.getMainLooper() 来创建一个主线程的 Handler,然后发送消息或 Runnable 到主线程执行。

// 创建一个 Handler,绑定到主线程的 Looper
Handler mainHandler = new Handler(Looper.getMainLooper());// 在子线程中执行任务,然后切换到主线程更新 UI
new Thread(new Runnable() {@Overridepublic void run() {// 执行一些耗时操作// 使用 Handler 切换到主线程更新 UImainHandler.post(new Runnable() {@Overridepublic void run() {// 在主线程中更新 UI// 例如更新 TextView 或其他 UI 元素textView.setText("更新 UI");}});}
}).start();

解释:
Looper.getMainLooper():获取主线程的 Looper,Handler 会绑定到这个 Looper,这样它就可以将消息投递到主线程。
mainHandler.post(Runnable):这个方法将一个 Runnable 任务发送到主线程执行。


另一种方法:通过 Activity 或 View 的 post 方法
你也可以直接在 Activity 或 View 上调用 post 方法,将任务切换到主线程:

// 直接在 UI 控件上执行任务
textView.post(new Runnable() {@Overridepublic void run() {// 在主线程中执行textView.setText("更新 UI");}
});

这种方式不需要手动创建 Handler,它会自动将任务切换到主线程。


runOnUiThread 最后一种:

// 在子线程中执行耗时操作,然后切换到主线程更新 UI
new Thread(new Runnable() {@Overridepublic void run() {// 执行一些耗时操作// 使用 runOnUiThread 切换到主线程更新 UIrunOnUiThread(new Runnable() {@Overridepublic void run() {// 在主线程中更新 UItextView.setText("更新 UI");}});}
}).start();

解释:
runOnUiThread():这是 Activity 类的一个方法,它接受一个 Runnable 对象作为参数,并在主线程中执行该 Runnable 内的代码。
这种方法适用于在 Activity 中直接操作 UI 时,尤其是在子线程中执行耗时操作后需要更新 UI 的场景。


相关文章:

  • ffmpeg windows 32位编译
  • SpringBoot基于RabbitMQ实现异步请求处理
  • 鹰盾加密器的超混沌加密原理深度解析:从理论基础到视频应用
  • 第十四届蓝桥杯_省赛B组(C).冶炼金属
  • window7 wpf程序打不开问题排查及处理
  • 1.0 ROS1安装及环境配置
  • linux之kylin系统nginx的安装
  • Vue 指令详解:概念与作用
  • CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
  • Nginx攻略
  • dedecms 织梦自定义表单留言增加ajax验证码功能
  • 解锁 Nginx Stream 代理—全面掌握 ngx_stream_proxy_module
  • 关于个性化头像框设计的分享与服务说明
  • NexusTerminal一款视频移动端的webSSH
  • el-upload组件,上传文件失败,:on-error方法失效
  • 使用java实现蒙特卡洛模拟风险预测功能
  • 【运维】【期末实训】网站简易搭建模拟
  • 笔记 软件工程复习
  • 详解CNN
  • 【Kafka】消息队列Kafka知识总结
  • b2b网站首页设计/推广方案模板
  • wordpress图片轮播/搜狗seo培训
  • 与国外公司合作网站建设上海公司/百度推广优化怎么做的
  • 做网站的图片/seo实战培训教程
  • 网站被挂马原因/怎么做品牌推广和宣传
  • 用手机怎样免费做网站/seo网站推广首页排名