android多线程监控view,android 主线程消息队列更新View

2023-11-17

主线程消息队列提供的方法

基本上只要继承自View的控件,都具有消息队列或者handler的一些处理方法,下面是一些handler方法以及被View封装了的方法,其底层用的基本都是handler的api。

4b1756c2c5f1613b7a4b630d2d628ed9.png

举例:查看postDelay的定义

android.view.View

public boolean postDelayed(Runnable action, long delayMillis) {

final AttachInfo attachInfo = mAttachInfo;

if (attachInfo != null) {

return attachInfo.mHandler.postDelayed(action, delayMillis);

}

// Assume that post will succeed later

ViewRootImpl.getRunQueue().postDelayed(action, delayMillis);

return true;

}

通常消息更新的用法如下

方法一

//如果需要延迟更新

new Handler().postDelay(new Runnable(){

public void run()

{

//在主线程更新数据和UI

}

},2*1000);

方法二

//方案二

TextView testTv = (TextView)findViewById(R.id.test_view_handler_tv);

testTv.postDelay(new Runnable(){

public void run()

{

//在主线程更新数据和UI

}

},2*1000);

两种方案比较,显然第二种更加经济环保。

关于runOnUIThread

Activity中也有一个方法,这个方法发送消息到UI线程,runOnUIThread(Runnable action);

先来看看他的源码实现

java.app.Activity

public final void runOnUiThread(Runnable action) {

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

mHandler.post(action);

} else {

action.run();

}

}

很显然,当方法运行在UI线程上时立即执行,否则发送消息到UI线程之后再执行。

runOnUIThread又为我们省却了创建Handler的异步,比如在多线程中,在子线程中再也不用使用handler发送消息了,完全可以在子线程中调用这个方法来“更新”UI了(注意哦,这里实际上会发送消息和执行代码段到UI线程,并不是在子线程上更新)

Activity.runOnUiThread不可以发送延迟执行的方法,为此我们需要定制可以延迟的runOnUiThread方法

Activity运行时会依附于Window之上,并且在Activity中默认具有根DecorView存在,这个默认根视图无法被覆盖,但他永远存在,座位一个View,为了“多快好省”的原则,我们应该充分利用这个DecorView

如下就是自定义的runOnUiThread:

public void runOnUiThread(Runnable action,int delayMillis)

{

getWindow().getDecorView().postDelayed(action, delayMillis);

}

try doing it!

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

android多线程监控view,android 主线程消息队列更新View 的相关文章

  • Linux系统下ping命令报错 name or service not know

    问题描述 CentOS 但是当执行ping命令的时候 提示name or service not known 解决方法 1 添加DNS服务器 1 vi etc resolv conf 进入编辑模式 增加如下两行内容 分别是首选DNS服务器和
  • logback--进阶--05--自定义Appenders

    logback 进阶 05 自定义Appenders 代码位置 https gitee com DanShenGuiZu learnDemo tree master logback learn 1 介绍 1 1 继承关系图 可以看到Appe
  • C++ 多态和虚函数

    一 先搞清override overload overwrite的区别 1 overload 重载 不是多态 在C 程序中 可以将语义 功能相似的几个函数用同一个名字表示 但参数不同 包括类型 顺序不同 即函数重载 1 相同的范围 在同一个
  • 药明康德成都研发中心投入运营;中国白酒行业净利润将迎来七年来首次下滑

    今日看点 药明康德成都研发中心正式投入运营 该研发中心将成为药明康德上海研发总部以外 又一个覆盖化学及生物学的新药发现整体研发平台 将为客户提供从小分子药物设计 合成 分析 体内体外生物学 肿瘤免疫学等全方位 一体化的新药研发服务 该研发中
  • 【编译原理】LR(1)分析方法(c++实现)

    前文回顾 编译原理 LR 0 分析方法 c 实现 编译原理 SLR 1 分析方法 c 实现 算法 来自龙书第二版 代码 和SLR的区别其实只是DFA中多了一个搜索符 构建分析表的时候规约项的列是相应的搜索符而已 代码基本上就在SLR的代码上
  • 拼多多anti_content算法

    最近拼多多的anti content算法更新了 闲着无聊就看了看 总思路如下 首先我们抓包 看到我们今天的目标 anti content 现在 我们通过堆栈入口随便下个断点 然后我们在CallStack中向下寻找 经过漫长的寻找 我们可以在
  • route命令的详细使用介绍

    1 命令格式 route f p Command Destination mask Netmask Gateway metric Metric if Interface 2 命令功能 Route命令是用于操作基于内核ip路由表 它的主要作用
  • es单机数据迁移到另一个es单机

    将一个Elasticsearch单机的数据迁移到另一个Elasticsearch单机主要可以分为两步 第一步 备份原有数据 将原有Elasticsearch单机中的数据备份到一个文件中 可以使用 Elasticsearch 提供的 snap
  • 第三十讲:神州路由器路由重分发配置

    RIP和OSPF协议是目前应用最广泛的路由协议 两种协议交接的场合也很多见 两种协议的重分布是比较常见的配置 主校区原来所采用的网络协议为OSPF 而分校区采用的路由协议是RIP 采用RIP和OSPF重分发技术可以解决此问题 实验拓扑图如下
  • PostgreSQL、Greenplum 日常监控 和 维护任务

    背景 Greenplum的日常监控点 评判标准 日常维护任务 展示图层 由于一台主机可能跑多个实例 建议分层展示 另外 即使是ON ECS虚拟机 一个虚拟机一个实例一对一的形态 的产品形态 实际上也建议分层展示 以示通用性 主机级图层 1
  • vue项目全局内引入外部CDN地址的js文件

    通过vue cli 构建的vue项目的根目录下 有一个index html文件 例如
  • 跳过selenium检测爬取淘宝直通车

    最近 有对阿里商家端进行一些数据爬取 这次爬取的是直通车人群溢价数据 发现对selenium的检测相当厉害 然而我的回答是 你强任你强 清风拂山岗 咱人工登录怕过谁 什么cokies user agent selenium检测 token
  • Android构建问题解决方案

    1 问题一 解决方法 在app下的build gradle中加上 packagingOptions exclude META INF DEPENDENCIES exclude META INF NOTICE exclude META INF
  • 怎么计算union和struct中字节数计算

    首先我的运行结果都是在64位系统的Xcode中运行的 然后 这个只是由于对于标准的位移量方法看得头疼 自己总结出来的 如果有错误或者不明欢迎留言 字节 一般成8位为一个字节 在Xcode中sizeof int 等于4 在这里也就采用int占
  • fastjson(七)处理超大对象和超大JSON文本

    当需要处理超大JSON文本时 需要Stream API 在fastjson 1 1 32版本中开始提供Stream API 来看一下示例代码 示例对象 package json fastjson StreamApi import java
  • java金额的正则表达式,【转】关于金额应验的Java方法(采用正则表达式)

    public static boolean isNumber String str java util regex Pattern pattern java util regex Pattern compile 0 9 java util
  • 2016阿里云121款产品和解决方案全向图(9月制)

    2016阿里云121款产品和解决方案全向图 9月制 摘要 云栖社区在9月底又更新了 2016阿里云产品全向图和解决方案全向图 导语 DT时代 一切都将走向数据化 可视化 在阿里云所阐述的 技术拓展商业的边界 商业驱动技术的变革 理念中 密集
  • 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考 http blog sina com cn s blog 171daf8e00102xclx html 汇编语言实验答案 王爽 https wenku baidu com view a1cd7c6c1fb91a37f111f18583
  • muduo网络库学习笔记(13):TcpConnection生命期的管理

    本篇通过分析muduo中TcpConnection对断开连接事件的处理 来学习muduo网络库对TcpConnection生命期的管理 TcpConnection对连接断开事件的处理 首先 我们来看一下TcpConnection处理连接断开

随机推荐

  • 华为OD题目: 整理扑克牌

    package com darling boot order od od12 import java util 整理扑克牌 题目描述 给定一组数字 表示扑克牌的牌面数字 忽略扑克牌的花色 请按如下规则对这一组扑克牌进行整理 步骤1 对扑克牌
  • 关于Bert被质疑利用“虚假统计性提示”的ACL论文

    曾经狂扫11项记录的谷歌NLP模型BERT 近日遭到了网友的质疑 该模型在一些基准测试中的成功仅仅是因为利用了数据集中的虚假统计线索 如若不然 还没有随机的结果好 这项研究已经在Reddit得到了广泛的讨论 引用自 新智元 真的不想那么标题
  • 社会中的学费

    上学期间 我们交学费是为了学习课本知识 我们也确实从中学到了很多有用的东西 这些学费我们觉得是物有所值的 当我们踏入社会的时候 我们也是要向社会交一定的学费 这种学费 我们能够学到的东西就是社会经验 这是东西是无形的 我们总会觉得自己的钱没
  • ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not foun

    复现代码过程中 无意间出现这个问题 本以为很好解决 没想到还是花了我好几个小时的时间 总结一下趴 我的环境是cuda11 3 python3 9 pytoch1 10 问题如图 图1 bug示意图 在网上找了很多答案 要么就是没说清的 要么
  • HTTPS网络编程——S代表SSL协议也叫TLS协议

    参考 HTTPS简介以及SSL协议详解 地址 https qingmu blog csdn net article details 108209248 spm 1001 2014 3001 5502 目录 1 HTTPS简介 2 SSL协议
  • stm32 的 ESP8266 wifi 模块 (ESP - 12s) 的使用

    1 ESP8266 的器件介绍 2 ESP2866外设 的引脚 3 我所用的的ESP2866 的引脚图 4 代码 编程的串口 5 wifi 的指令 1 AT 测试指令 2 AT RST 重启模块 3 AT GMR 查看版本信息 4 AT R
  • 家政行业丨制作便捷高效的家政小程序

    随着现代生活节奏的加快和家庭需求的多样化 越来越多的人开始寻找一种更方便 更高效的方式来获取家政服务 而家政小程序的兴起为这一需求提供了理想的解决方案 本文将简要介绍家政小程序是什么 探讨家政小程序的好处 并提供一些制作搭建家政小程序的方法
  • 【Python】记录一次 Linux + Python + RocketMQ 辛酸历程

    文章目录 安装Python 准备环境 编译安装 遇到问题 安装openssl 重新编译 安装依赖库 准备代码 验证 这是记录一次辛酸的Linux Python RocketMQ使用历程 需求背景是需要验证线上一个RocketMQ服务和里面的
  • 2014.12.17笔记

    我记得科学松鼠会的姬十三曾在一篇文章中写到 开始干一件好事情就像拿着锣一敲 然后志同道合的人就从四面八方赶来 开源之美 仅在于此 不要问怎么入门 直接上路吧 您刚才那个问题是说大数据跟人工智能和深度学习怎么划等号 是这么一个关系 大数据是一
  • XML可扩展标记语言

    XML可扩展标记语言 XML ExtensibleMarkup Language 可扩展标记语言是一种基于文本的格式用于展示结构化的信息 主要用于传输和存储数据 属于W3C World Wide Web Consortium 标准 XML的
  • hdfs怎么处理小文件问题

    一 HAR文件方案 为了缓解大量小文件带给namenode内存的压力 Hadoop 0 18 0引入了Hadoop Archives HAR files 其本质就是在HDFS之上构建一个分层文件系统 通过执行hadoop archive 命
  • 递归下降算法语法分析c语言

    递归下降算法 自上而下文法的递归下降的预测分析 从根节点出发逐步构造分析树 所以被称作自上而下文法 在文法中有递归的函数 例如 E gt TE 所以叫做递归下降算法 使用的文法如下 E gt TE E gt TE e T gt FT T g
  • fcfs调度算法_使用C程序实现先到先服务(FCFS)CPU调度算法

    fcfs调度算法 CPU scheduling decides which of the available processes in the ready queue is to be allocated the CPU There are
  • ORACLE 序列sequence小结

    创建序列语法 需要获取相应的权限 create sequence NAME INCREMENT BY START WITH integer 初始值和递增间隔 MAXVALUE integer NOMAXVALUE 上界或无上界 MINVAL
  • python实训报告心得体会-Python学习心得体会

    首先最开始 我们要明确一点 学习编程不是一日之功 需要每天投入时间学习 也不可纸上谈兵 需要自己亲自操作 不动手就不会发现问题 动了手印象才会深刻 记得更靠 接下来我就稍微总结一下 我在学习中遇到的问题和一些心得体会 1 修改字符串大小写时
  • WPS插件开发流程(1)

    OneKey Lite是一款由 只为设计 独立开发的WPS演示免费插件 在开发过程中 感恩于网上那些无私分享代码的陌生人 给我这个开发小白提供了重要的借鉴参考 于是我决定把用C 和Visual Studio开发WPS插件的每一个具体步骤分享
  • 使用ffmpeg制作时光影集

    目前QQ 剪影等都有照片制作成视频的功能 研究一段时间 始终不得要点 目前能实现的方式有h5动感影集 webv格式视频以及传统的ffmpeg进行照片合成剪辑 H5动感影集没办法导出成视频 webv对于视频的编辑依托于js 因此最终选择了利用
  • 国产大模型顶流「讯飞星火」:图片生成、代码生成,支持插件等重磅上线

    8月12日 新华社研究院中国企业发展研究中心发布的 人工智能大模型体验报告2 0 报告中 讯飞星火以总分1013分 被评为国产卓越大模型之一 体验地址 https xinghuo xfyun cn ch 8tcbd7p 讯飞星火可基于自然文
  • VS配置QT及打开项目报错处理

    例如 1 No such file or directory 2 找不到 Windows SDK 版本 10 0 17763 0 解决方案 请在VS安装所需版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择 重定
  • android多线程监控view,android 主线程消息队列更新View

    主线程消息队列提供的方法 基本上只要继承自View的控件 都具有消息队列或者handler的一些处理方法 下面是一些handler方法以及被View封装了的方法 其底层用的基本都是handler的api 举例 查看postDelay的定义