首页 > 其他分享 >Andriod 子线程更新UI

Andriod 子线程更新UI

时间:2022-11-09 14:59:09浏览次数:41  
标签:在子 更新 Handler 线程 Andriod UI post

Andoird是不允许直接在子线程中更新UI的。原因是子线程中更新UI会引起线程不安全问题,导致界面卡顿掉帧。

需要通过handler.post将子线程的任务发送到UI线程进行处理。

下面介绍几种子线程更新UI的方法

方式一:Handler和Message

常规使用方法

方式二:在子线程中调用view.post

myView.post(new Runnable() {          
  @Override
  public void run() {
    // 更新UI
    myView.setText(“更新UI”);
  }});

方式三:在子线程中调用runOnUIThread

在子线程中直接调用Activity.runOnUiThread(Runnable action)方法

runOnUiThread(new Runnable() {
  @Override
  public void run() {
    // 更新UI的操作
  }
});

方式四:Handler.post()方法

追踪源码发现,这几种方法也是通过Handler+Message来实现的。一般简单的更新UI推荐使用方法二和方法三

标签:在子,更新,Handler,线程,Andriod,UI,post
From: https://www.cnblogs.com/suiyilaile/p/16873650.html

相关文章

  • 读者-写者(多线程)
    读者-写者(多线程)读者写者问题抽象解释多个进程访问一个共享的数据区读者(读进程)只能读数据,写者(写进程)只能写数据适用于数据库、文件、内存、寄存器等数据区的访问模型......
  • 读者-写者(多线程)
    写者优先截图代码#include<stdio.h>#include<stdlib.h>#include<time.h>#include<sys/types.h>#include<pthread.h>#include<semaphore.h>#include......
  • 线程
    操作系统线程理论 线程概念的引入背景进程之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程......
  • elementUI 搜索条件、table、页脚封装
    一共分成了两个组件:组件一:搜索条件=>SearchParams.vue组件二:el-table和el-pagination=>TablePagintion考虑到业务的使用场景没用做过多的封装。(1)组件一:搜索条件代......
  • 多进程多线程记录第一篇
    多线程与多进程一,什么是进程,什么是线程?​ 进程:运行中的程序.每次我们执行一个程序,咱们的操作系统对自动的为这个程序准备一些必要的资源(例如,分配内存,创......
  • Java中线程的基本操作以及Thread和Runnable两种实现的比较
    线程的定义:某一时间点执行的处理,是操作系统能够进行运算调度的最小单位。一条线程是某一进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务......
  • 读者-写者(多线程)
    0推荐在openEuer上实现1描述操作系统中“读者-写者”问题,理解问题的本质,提交你理解或查找到的文本资料2利用多线程完成reader和writer3在main中测试若干个reade......
  • 线程同步-读者写者问题(多线程)
    多线程通信之读者、写者问题读、写问题是另一个非常出名的同步问题,常常用来模拟数据库的数据查询和数据修改两种情况问题。也即,一个数据库允许有多个访问者同时对其进行......
  • WinForm中的多线程
    使用BeginInvoke或Invoke作用在自己创建的非UI线程中,进行UI操作,比如更新UI上控件的状态。Windows窗体中的控件被绑定到特定的线程,不具备线程安全性。因此,如果从另一......
  • 00017-layui 对话框 layer.open 点击保存,按钮失效,保存完后,再恢复
    00017-layui对话框layer.open点击保存,按钮失效,保存完后,再恢复 原创认真的coder2020-05-3022:28:43©著作权文章标签layui文章分类jQuery前端开发阅读数816......