android更新ui能在主线程,真的必须要在主线程更新UI吗?

2023-10-31

一般UI更新都会调用requestLayout 或者invalidate, 自定义view 也要如此 ???。

@android.view.RemotableViewMethod

public void setWidth(int pixels) {

mMaxWidth = mMinWidth = pixels;

mMaxWidthMode = mMinWidthMode = PIXELS;

requestLayout();

invalidate();

}

@Override

public void requestLayout() {//不会调用draw

if (!mHandlingLayoutInLayoutRequest) {

checkThread();

mLayoutRequested = true;

scheduleTraversals();// 1

}

}

void checkThread() {

if (mThread != Thread.currentThread()) {

throw new CalledFromWrongThreadException(

“Only the original thread that created a view hierarchy can touch its views.”);

}

}

而在onCreate直接去更新UI,不走上述requestLayout 或者invalidate。其堆栈是这样的:

2020-08-09 09:39:48.374 3561-3561/com.yz.myapplication D/yyzz: android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614) android.app.ActivityThread

2020-08-09 09:39:48.374 3561-3561/com.yz.myapplication D/yyzz: com.yz.myapplication.MainActivit

本文地址:https://blog.csdn.net/qq_42894864/article/details/107890763

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android更新ui能在主线程,真的必须要在主线程更新UI吗? 的相关文章

  • ModbusPoll和Slave的使用教程

    ModbusPoll和Slave的使用教程 在工业领域 很多地方采用了Modbus协议 简单理解一下Modbus协议 就是把数据存在寄存器地址里面编号 然后通过协议读取 modbus有主机和从机 主机只有一个 从机可以有很多个 玩过Tcp的
  • PAT C语言入门题目-7-52 数组元素循环右移问题 (20 分)

    7 52 数组元素循环右移问题 20 分 一个数组A中存有N gt 0 个整数 在不允许使用另外数组的前提下 将每个整数循环向右移M 0 个位置 即将A中的数据由 A 0 A 1 A N 1 变换为 A N M A N 1 A 0 A 1
  • 尚硅谷-康师傅-MySQL详细笔记(10-18章)

    mysq详细笔记10 18章 第10章 创建和管理表 10 1 基础知识 10 1 1 一条数据存储的过程 10 1 2 标识符命名规则 10 1 3 MySQL中的数据类型 10 2 创建和管理数据库 10 2 1 创建数据库 10 2
  • 安卓移动应用开发之从零开始写安卓小程序3

    实验3 修改我们的HelloWorld程序 让它和我们的手机app外观差不多 一 打开我们的HelloWorld程序 没有的同学请自行创建或者下载我发上去的资源 大家如果遇到sync没有跳出来的 可以点击这个search 然后输入sync回
  • Nmap简单使用教程

    在Web攻防的过程中对有关主机存活 应用版本扫描的相关工具中 Nmap是最常使用的信息收集工具 Nmap是一款开源的网络探测和安全审核的工具 它的设计目标是快速地扫描大型网络 Nmap可以探测网络中有哪些主机存活 这些主机都提供了什么服务
  • 【山河送书第十期】:《Python 自动化办公应用大全》参与活动,送书两本!!

    山河送书第十期 Python 自动化办公应用大全 参与活动 送书两本 前言 一 书籍亮点 二 作者简介 三 内容简介 四 购买链接 五 参与方式 六 往期赠书回顾 前言 在过去的 5 年里 Python 已经 3 次获得 TIOBE 指数年
  • 基于IMU和超声的3D手势识别笔

    随着科技的发展 人机交互在商业中有了越来越多的应用 面对日益复杂的交互场景 手势识别逐渐成为虚拟现实等相关应用的主要交互手段 3D手势识别是一个具有挑战性的问题 常用的手势传感器有三种基本类型 多点触摸屏传感器 基于视觉的传感器和基于安装的
  • 微信小程序(订阅消息)

    小程序模板消息即将被废弃掉 于是有了新接口wx requestSubscribeMessage 订阅消息文档 步骤 1 获取用户openid access token 前面文章提到过 2 获取模板 ID 3 获取下发权限 api 4 发送订
  • 【项目】前端实习——后端接口数据获取与渲染

    后端数据获取与渲染 接口联调 数据渲染 挂载 生命周期 数据更新 实习项目开发与自己平时练习的项目最大的不同就是有接口数据 通过发起一定的请求获取到后端的数据 接口联调 在后端部署好后 通过网络请求去获取数据 前面我们已经定义好一些死的数据
  • uboot环境变量分析

    项目情景 最近我在一个新平台的开发过程中遇到烧录问题 具体的问题是使用原厂提供的烧录脚本烧录成功 但是固件却没有更新 其中kernel和dtb烧录指令如下 adnl exe Partition M mem P 0x1000000 F lin
  • BOA 调用 CGI 原理

    文章目录 BOA 调用 CGI 原理 BOA 调用 CGI 原理 环境 arm7 i mx6ul 源码 boa 0 94 13 boa 移植以及怎么使用CGI网上有很多示例 但是找不到原理相关的 今天项目中有关用到 就看了下源码 首先我们用
  • Redis闲谈(1):构建知识图谱

    场景 Redis面试 图片来源于网络 面试官 我看到你的简历上说你熟练使用Redis 那么你讲一下Redis是干嘛用的 小明 心中窃喜 Redis不就是缓存吗 redis主要用作缓存 通过内存高效地存储非持久化数据 面试官 Redis可以用
  • deadline调度器

    Linux内核中定义了5个调度器类 分别对应5个调度器 调度优先级顺序由高到低依次为 stop sched class dl sched class rt sched class fair sched class idle sched cl
  • Qt学习日志2021_08_20

    Qt学习日志2021 08 20 Qt项目的创建 为了做一个Qt的项目 先来学习学习 今天时间不多 先做一些简单的了解 创建项目很简单 安装好Qt之后 就可以根据提示创建了 要注意 不能路径有中文 项目名称也不能有中文 空格等 上面还有很多
  • C++STL读写锁、普通锁(shared_mutex、mutex)效率对比

    define READER CNT 8 define LOOP COUNT 5000000 include
  • 使用国内镜像网站解决github clone速度慢问题

    问题描述 我从github clone一些项目的时候速度极慢 有时候clone到一半还会失败 简直令人抓狂 快速克隆github项目插件 解决步骤 1 使用国内镜像网站 目前已知Github国内镜像网站有github com cnpmjs
  • mysql如何添加一个表的外键

    作者 别先生 博客园 https www cnblogs com biehongli CSDN https blog csdn net Biexiansheng 如果您想及时得到个人撰写文章以及著作的消息推送 可以扫描上方二维码 关注个人公
  • 前缀和&差分

    前缀和 能快速求出来一段数的和 比如说从 l r 的和 可以说是最大的应用 是个很重要的技巧 下标从1开始 二维前缀和 leedcode练习 724 寻找数组的中心下标 思路 记数组的全部元素之和为 total 当遍历到第 i 个元素时 设
  • angular知识点--@output()

    子组件向父组件传递数据 output 碎碎念 这是一个非常笨的开发 这也是第一次写博客 目的是想在学习angular知识的过程中把一些知识点记下来 如果能帮助到需要的人 也是一件好事 都是一些自己在学习过程中的一点体会 如果有什么不对的感谢

随机推荐

  • 解决 Deepin V20、Ubuntu 20.04、Linux Mint 20 声卡无法识别导致的没有声音

    简述 随着 Linux kernel 5 4 稳定版的发布 各个主流的 Linux 发行版也都将最新发行版的默认内核都设置为了 5 4 往往内核一升级就会带来各种问题 这不这个最近在物理机上尝试了几个自己喜欢的发行版 标题所列 均出现了声卡
  • 暗影精灵5 (i7 9750H + RTX2060) 安装win10+Ubuntu18.04双系统

    电脑型号 hp 暗影精灵5 Air 显卡 RTX 2060 CPU i7 9750H 硬盘 500G固态 安装的启动方式 UEFI 这个电脑比较新 安装时有很多坑 建议使用18 04 3版本的镜像 本人一开始使用18 04 2安装失败了 安
  • ssh免密钥登录失败原因排查

    最近多次遇到不同原因导致ssh免密钥登录的问题 明明都配置好了 但是就是不通 这里记录一下排查问题的思路 作为备忘 具体如何配置 网上文章很多 这里就不再重复 查看debug日志很关键 客户端 参数加 v 比如ssh v xxx com 服
  • 服务器的基本信息,服务器基本信息

    服务器基本信息 内容精选 换一换 华为云提供两种连接方式通过SQL Server客户端连接实例 非SSL连接和SSL连接 其中 SSL连接实现了数据加密功能 具有更高的安全性 准备弹性云服务器通过内网连接华为云关系型数据库实例 您需要购买一
  • northgard如何修改服务器,Northgard八项修改器(Northgard游戏修改助手)V2.3.3.18897 免费版...

    Northgard八项修改器 Northgard游戏修改助手 是一款很好用的针对Northgard游戏制作的修改辅助工具 小编推荐的这款Northgard八项修改器功能强大 使用后可以修改游戏属性 帮助玩家体验到更多精彩的游戏内容 修改器可
  • (力扣23)合并排序链表,采用分治思想

    题目 给定一个链表数组 每个链表都已经按升序排列 请将所有链表合并到一个升序链表中 返回合并后的链表 什么是归并排序 归并排序的时间复杂度仅次于快排 归并排序算法每次将序列折半分组 共需要logn轮 因此归并排序算法的时间复杂度是O nlo
  • Linux下TCP编程

    服务器端在Linux环境下 Server cpp include
  • 从壹开始前后端分离[.netCore 不定期 ] 36 ║解决JWT自定义中间件授权过期问题

    缘起 哈喽 老张的不定期更新的日常又开始了 在咱们的前后端分离的 net core 框架中 虽然已经实现了权限验证 框架之五 Swagger的使用 3 3 JWT权限验证 修改 只不过还是有一些遗留问题 最近有不少的小伙伴发现了这样的一些问
  • flutter 修改iOS app图标 名称

    这里主要讲2点 一是 iOS app的图标尺寸大小 二 是如何修改iOS app图标以及名称 iOS图标尺寸大小 首先我们打开xcode 并打开项目 找到app图标的位置 接下来我们可以看到图标下面有很详细的pt提示 这里的pt跟web的p
  • 对四位数加密

    输入1个四位数 将其加密后输出 方法 1 将该数每一位上的数字加9 然后除以10取余 做为该位上的新数字 2 第1位和第3位上的数字互换 第2位和第4位上的数字互换 组成加密后的新数 例 括号内是说明 输入 1257 输出 The encr
  • IDEA JAVA文档注释和方法注释模板

    IDEA JAVA文档注释和方法注释模板 文档注释 if PACKAGE NAME PACKAGE NAME package PACKAGE NAME end parse File Header java ClassName NAME De
  • 修改mysql数据库的默认编码方式

    修改my ini文件 加上 default character set gb2312 设定数据库字符集 alter database da name default character set charset 1 设置数据库编码 etc m
  • 【ReID】【Skimming】Unity Style Transfer for Person Re-Identification

    ReID Skimming Unity Style Transfer for Person Re Identification 模型 实验 略读了新发布的基于GAN方法的ReID工作 Unity Style Transfer for Per
  • qt 绘制消息框_Qt——消息对话框的设计

    1 消息对话框是什么 消息对话框 MessageBox 提供了一个模态对话框 用来通知用户某些信息 或者用来询问用户一个问题并获得一个答复 先看下面2张图 第一张图是网易云音乐的界面截图 在删除歌单时 防止用户误操作 弹出了一个提示 提醒用
  • 可变参数, printf 实现的原理 ,va_start和va_end

    对于可变参数的函数可以 使用下面的宏来 获取输入的每一个参数 这些宏定义在stdarg h中 typedef char va list va start宏 获取可变参数列表的第一个参数的地址 list是类型为va list的指针 param
  • 大一python考试知识点_Python基础知识点整理

    参考资料 1 廖雪峰 内容整理 函数 函数返回 函数执行时遇到return即执行完毕 返回结果 没有return 执行完毕返回None return None可以简写为return 内建函数 高效快速 e g input ord pow i
  • 等保2.0一级安全要求

    第一级安全保护能力 应能够防护免受来自个人的 拥有很少资源的威胁源发起的恶意攻击 一般的自然灾难 以及其他相当危害程度的威胁所造成的关键资源损害 在自身遭到损害后 能够恢复部分功能 1安全通用要求 1 1安全物理环境 1 1 1物理访问控制
  • 04_Pandas获取和修改任意位置的值(at,iat,loc,iloc)

    04 Pandas获取和修改任意位置的值 at iat loc iloc 要在pandas DataFrame中的任何位置检索或更改数据 可以使用at iat loc iloc 位置的指定方法 at loc 行标签 行名 列标签 列名 ia
  • 一种基于光流的无人机仿生智能避障方法

    转自 https patents google com patent CN106155082A zh 一种基于光流的无人机仿生智能避障方法 技术领域 0001 本发明涉及一种单目视觉的基于光流的无人机智能仿生避障方法 特别是属于人 工智能以
  • android更新ui能在主线程,真的必须要在主线程更新UI吗?

    一般UI更新都会调用requestLayout 或者invalidate 自定义view 也要如此 android view RemotableViewMethod public void setWidth int pixels mMaxW