Android 子线程发送handle更新UI遇到This message is already in use解决方法

【小白指南】如何将deepseek引入WPS\Word\Excel中去? 如何将deepseek引入WPS\Word\Excel中去?纯小白都能看的懂,一步步操作就能行 阅读详情

首先说一下需求在Activity中弹出一个dialog,dialog中有一个动画

却遇到一下错误

· 解决方法:

是因为在一个线程内发消息用同一个Message对象导致的。

原来错误的写法:

        singleThreadExecutor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    Message msg_1 = new Message();
                    msg_1.what = KEY_1;
                    mHandler.sendMessage(msg_1);
                    Thread.sleep(1600);
                    msg_1.what = KEY_2;
                    mHandler.sendMessage(msg_1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });


修改后正确的写法:

        singleThreadExecutor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    Message msg_1 = new Message();
                    msg_1.what = KEY_1;
                    mHandler.sendMessage(msg_1);
                    Thread.sleep(1600);
                    Message msg_2 = new Message();
                    msg_2.what = KEY_2;
                    mHandler.sendMessage(msg_2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

总结:在线程内发送消息不要用同一个Message对象,解决办法很简单new Message();皆可以解决

基于LightGBM和多模型融合的量化交易研究:沪深300为例【附代码】 📊 数据科学与大数据专业 | 数据分析与模型构建 | 数据驱动决策✨ 专业领域:数据挖掘与清洗大数据处理与存储技术机器学习与深度学习模型数据可视化与报告生成分布式计算与云计算数据安全与隐私保护💡 擅长工具:Python/R/Matlab 数据分析与建模Hadoop/Spark 大数据处理平台SQL数据库管理与优化Tableau/Power BI 数据可视化工具TensorFlow/PyTorch 深度学习框架✅数据科学与大数据技术毕业论文【数据】 阅读详情

相关推荐

SECS/GEM协议学习教程

摘要:SECS/GEM是半导体制造设备通信的国际标准,定义了主机系统与设备间的通信规范,包括设备控制、状态监控、数据采集等功能。协议采用分层架构(应用层、消息层、传输层、物理层),支持关键消息类型如S1F13(建立通信)、S2F13(数据采集)等。通信流程涵盖建立连接、数据交换和终止会话,并通过状态变量(SVID)、事件(CEID)等实现实时交互。典型应用包括设备初始化、报警处理及配方管理,需处理数据类型(如U2、A、L)和通信调试问题。

GitHub个人仓库地址:https://github.com/feiyuluoye ; 个人塔罗牌占卜平台:http://118.126.82.12:8080/ ; 欢迎广大Coding友共同交流讨论。 2056

Android 利用handler发送消息:"This message is already in use"错误

问题出现的情况是,我在接收线程接收到消息后,需要发送到不同的页面,然后,就直接调用了各个页面的handler来发送了,结果报错,翻译过来也就是这个message已经用了,我解决的办法是给每个页面发送消息的时候都单独创建一个message,用不同的message来分别发送到各个页面中。 然后,由于发送给各个页面的时候,可能有的页面还没有创建,也就发送有问题。这个时候,我解决的办法是定义一个全局的变

Lu_Ca的博客 1485

【域控制器EMC】域控制器EMC设计总结

汇总项目设计当中关于EMC的设计要点,主要从原理设计、Layout、结构、外设部分总结。满足要求的器件和合理的电路能降低电磁干扰;正确的布局、接地、信号路径、屏蔽等可以减少电磁辐射。结构件设计也会对EMC性能产生影响。

weixin_42098658的博客 1259

AndroidRuntimeException:This message is already in use

对同一个消息对象,重复多次发送便会报This message is already in use错误。解决方法就是重新获取消息对象。 例如: Message msg = myHandler.obtainMessage(); msg.arg1 = 1; myHandler.sendMessage(msg); msg.arg1 = 2; myHandler.sendMessag

wukun1006的专栏 572

vins-mono保存、重载地图、evo工具测试

下面咱们来对vins-mono的重定位vins-mono官方源码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono https://blog.csdn.net/learning_tortosie/article/details/83182258 运行这条: roslaunch benchmark_publisher publish.launc...

追 1万+

Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么)

Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么) 目录 Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么) 一、简单介绍 二、一些专有项简介 Entity Context Group Collector Matcher System Feature 三、注意实现 四、ECS 的下载 Github 上下载 Unity Asset Store 中下载 U...

仙魁XAN 7779

android 细节之 AndroidRuntimeException:This message is already in use

今天在做项目处理消息队列的时候,遇到了这样一个问题,一个异常。AndroidRuntimeException:This message is already in use。 我当时的具体业务需求情境为,想要跟硬件联动的时候,保持在一定时间内只有一个操作,如果不idle,就重新发送消息,并且此消息应该delay一段时间,就是TIMEDELAY。 具体出现错误的代码如下: private cla

修学储能,平凡之路 3772

避开这5个坑!Tushare数据获取与清洗的常见问题解决方案

本文详细解析了使用Tushare进行金融数据分析时常见的5大问题,包括Token失效、数据缺失、频率限制等,并提供了Python实战解决方案。通过智能填充策略、队列化管理和分层存储设计,帮助开发者高效获取和清洗金融数据,提升量化分析效率。特别适合金融数据分析师和Python开发者参考。

f9g0h的博客 418

Android基础-- 利用handler发送消息报:"This message is already in use"解决办法

在利用handler发送消息时,遇到了一个问题如下:ERROR/AndroidRuntime(9774): Android.util.AndroidRuntimeException: { what=1006 when=-2ms arg1=1 obj=MotionEvent{40551f40 action=0 x=180.85541 y=390.24445 pressure=0.1137255 siz

4358

Autosar诊断实战系列23-NRC优先级解析

NRC分类,优先级判断逻辑及测试注意事项介绍。

initiallizer的博客 2617

AI辅助需求分析与提示词生成

文章标题 《AI辅助需求分析与提示词生成》 关键词 人工智能 需求分析 提示词生成 深度学习 机器学习 强化学习 数学模型 系统架构

AI天才研究院 1212

android 子线程toast handle,Android进阶:六、在子线程中直接使用 Toast 及其原理

一般我们都把Toast当做一个UI控件在主线程显示。但是有时候非想在子线程中显示Toast,就会使用Handler切换到主线程显示。但是子线程中真的不能直接显示Toast吗?答案是:当然可以。那应该怎么操作呢?在当前线程中先初始化一个Looper即可!Looper.prepare();Toast.makeText(getBaseContext(), "text", Toast.LENGTH_LON...

weixin_42548816的博客 616

MoveIt 运动学、运动规划、混合规划、move_group

混合规划是运动规划方法的一个术语,它将异构运动规划器结合起来,以产生更稳健或反应更快的解决方案。这种通用方法在导航领域已经非常成熟,并在导航2等流行项目中成功实施。MoveIt 的混合规划架构结合了一对全局规划器和局部规划器,它们以不同的规划速度和问题范围并行、并发运行。全局规划器的任务是解决全局运动规划问题,这与 “感知-规划-行动 ”应用中使用的规划器非常相似。所使用的规划器算法应该是完整的,因此假定其计算时间相对较慢。此外,全局规划器不要求实时安全,这意味着无法保证规划器在特定期限内找到解决方案。

机器人控制与仿真应用 2131

android之handle

异步消息处理机制Handler:http://www.cnblogs.com/lyajs/p/5347990.html Android中的异步消息处理主要由四个部分组成,Message、Handler、MessageQueue和Looper。 1.Message   Message是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。(字...

anscii_2015的博客 142

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

详解异步通信Handle的分析与应用

android 异步通信机制Handler的分析与运用 当我们应用程序启动时,Android系统就会创建一个主线程即UI线程,在这个UI线程中进行对UI控件的管理,如页面的刷新或者事件的响应等过程。同时Android规定在UI主线程不能进行耗时操作,否则会出现ANR现象,对此,我们一般是通过开启子线程来进行耗时操作,在子线程中通常会涉及到页面的刷新问题,这就是如何在子线程进行UI更新,对于这个问...

AndyYuan317的博客 266

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android Handler 运行机制

Handler是一个Android SDK 提供给开发者方便进行异步消息处理的类。 我们都知道在UI线程中不能进行耗时操作,例如数据读写、网络请求。Android 4.0开始,在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadException。这个时候,我们就会开始依赖Handler。我们在子线程进行耗时操作后,将请求结果通过Handler的sendM...

sandy519的专栏 136

全面解析Android进阶面试常客之Handler

前言:又到了一年一度的跳槽季,准备跳槽的你在关于Android面试方面的知识都完全掌握了吗?Android面试中经常被问到的知识——Android消息机制即Handler有关的问题你都能解释的清楚吗?如果你对Android消息机制比较模糊或者能够回答与Handler有关的问题但是不清楚其中的原理,那么你将会在本文得到你想要的答案。 阅读本文后的收货 阅读本文后你将会有以下收获: 清楚的理解Hand...

weixin_43901866的博客 656

Android源码分析——Looper,Messagequeue,Message,handler初始化及handler机制简介

Handler机制算是我入门源码的第一节。看得比较仔细。体会较多。mark一下。 顺序:先科普一下Handler基本功,然后再细讲下源码 一、Handler目的: 目的:Handler机制来处理了子线程去更新UI线程控件问题。 二、handler关系图: 其实各种书籍上都有这么一张图。但是主要是学习源码,所以还是自己手画一张“流程图”。 三、handler知识点总结: (若以下总结都

haibo_bear的博客 2862

Handle温习笔记

Handler笔记 1.handler是啥 handler是android给我们提供用来更新ui的一套机制,也是一套消息处理的机制,我们可以发送消息,也可以通过它处理消息 大部分东西都是handler发送消息的,android的fragmwork也是通过handler处理的actitivy中各种生命周期的 2.为啥使用handler,不用行不行 创建一个handler的时候,它会和一个默认的线...

woyvzhuixun的博客 312

子线程中创建handler

方法1、 android显示操作界面,需要在主线程中执行 不在主线程中需要在handler中执行 Looper.prepare(); myhandler = new Handler(new Handler.Callback() { public boolean handleMessage(Message msg) { return false; } }); Looper.loop

HeAiMing 1055

Android的Handler常见的面试问题

本文是对常见面试问题的分析,关于Handler的运行机制详细分析见:Android Handler的源码分析 1、Handler是怎么实现切换线程的? 2、handler.sendMessage()与handler.post()的区别? 3、MessageQueue是怎么增删消息的? 4、一个线程可以有几个Handler?几个Looper?几个MessageQueue? 5、A Handler发送...

xk7298的博客 1086

Android多线程编程之Handler篇(消息机制)

Android多线程编程之Handler篇(消息机制)Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。 MessageQueue 消息队列,以队列的形式(实为单链表结构)对外提供插入和删除的工作, Looper 以无限循环的形式不断获取MessageQueue中的消息,有则处理,无则等待。ThreadLo

Walk the horizon 2402

Android--Handler

Android--Handler 一、Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI。 解释:当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件, 进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响...

weixin_30482181的博客 91

Handler消息机制

handler的简单解析

weixin_44389338的博客 438

Android消息处理机制——Handler

1.为什么要使用Handler? 子线程不能更改主线程的UI,在异步消息处理机制中,通过Handler完成从子线程到主线程的切换,完美解决子线程数据请求,主线程更新UI的问题 2.Handler基本原理 主线程里都维护了一个消息对列(message queue),子线程创建消息(Message),通过主线程里的Handler把消息发送到消息队列(message queue),在主线程里还有一个轮循...

qq_40575302的博客 359

10.1 Handler使用及原理分析、Looper 源码分析

Handler 线程间通信的一种机制,同时也可以传送数据。 Looper 轮询机制,不断获取队列里的消息,让handler目标去处理消息 MsgQueue 消息队列,保存msg消息的。 msg 数据的载体。 handler.sendMessage(msg) public final boolean sendMessage(Message msg) { ret...

Chents 329

Android Runnable运行在哪个线程

Android Runnable运行在哪个线程      Android中的Runnable并不一定是新开的线程,比如下面调用的方法就是运行在UI主线程中 Hanlder handler = new Handler(); handler.post(new Runnable(){     public void run(){ } }); 官方文档对此的解释是: The runna

lywoct的博客 1055
上一篇: Android Studio打开项目卡死解决方法
下一篇: 使用Chrome调试web app
bbccloud
博客等级 码龄11年 23粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值