一、Handler的定义:
主要接受子线程发送的数据, 并用此数据配合主线程更新UI.
解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭". 这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,也就是说,更新UI只能在主线程中更新,子线程中操作是危险的. 这个时候,Handler就出现了来解决这个复杂的问题,由于Handler运行在主线程中(UI线程中),它与子线程可以通过Message对象来传递数据,这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。
二、Handler一些特点
handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程),
它有两个作用: (1): 安排消息或Runnable 在某个主线程中某个地方执行, (2)安排一个动作在不同的线程中执行
Handler中分发消息的一些方法
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,
sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.
三、Handler实例
(1) 子类需要继承Handler类,并重写handleMessage(Message msg) 方法, 用于接受线程数据
以下为一个实例,它实现的功能为 : 通过线程修改界面Button的内容
1 public class MyHandlerActivity extends Activity {
2 Button button;
3 MyHandler myHandler;
4
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.handlertest);
8
9 button = (Button) findViewById(R.id.button);
10 myHandler = new MyHandler();
11 // 当创建一个新的Handler实例时, 它会绑定到当前线程和消息的队列中,开始分发数据
12 // Handler有两个作用, (1) : 定时执行Message和Runnalbe 对象
13 // (2): 让一个动作,在不同的线程中执行.
14
15 // 它安排消息,用以下方法
16 // post(Runnable)
17 // postAtTime(Runnable,long)
18 // postDelayed(Runnable,long)
19 // sendEmptyMessage(int)
20 // sendMessage(Message);
21 // sendMessageAtTime(Message,long)
22 // sendMessageDelayed(Message,long)
23
24 // 以上方法以 post开头的允许你处理Runnable对象
25 //sendMessage()允许你处理Message对象(Message里可以包含数据,)
26
27 MyThread m = new MyThread();
28 new Thread(m).start();
29 }
30
31 /**
32 * 接受消息,处理消息 ,此Handler会与当前主线程一块运行
33 * */
34
35 class MyHandler extends Handler {
36 public MyHandler() {
37 }
38
39 public MyHandler(Looper L) {
40 super(L);
41 }
42
43 // 子类必须重写此方法,接受数据
44 @Override
45 public void handleMessage(Message msg) {
46 // TODO Auto-generated method stub
47 Log.d("MyHandler", "handleMessage......");
48 super.handleMessage(msg);
49 // 此处可以更新UI
50 Bundle b = msg.getData();
51 String color = b.getString("color");
52 MyHandlerActivity.this.button.append(color);
53
54 }
55 }
56
57 class MyThread implements Runnable {
58 public void run() {
59
60 try {
61 Thread.sleep(10000);
62 } catch (InterruptedException e) {
63 // TODO Auto-generated catch block
64 e.printStackTrace();
65 }
66
67 Log.d("thread.......", "mThread........");
68 Message msg = new Message();
69 Bundle b = new Bundle();// 存放数据
70 b.putString("color", "我的");
71 msg.setData(b);
72
73 MyHandlerActivity.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI
74
75 }
76 }
77
78 }
分享到:
相关推荐
自动化工具_鼠标连点_ZMClick_兼容性软件_1743961858
内容概要:本文详细介绍了增材制造仿真技术,特别是利用ANSYS Workbench进行温度场和应力场的模拟。文中涵盖了多种增材制造工艺,如WAAM(电弧增材制造)、SLM(选择性激光熔化)和同轴送粉增材制造。重点讨论了双椭球热源模型的应用及其在APDL命令流中的实现,强调了热源参数的选择和调整。此外,还探讨了单道单层和多道多层增材仿真的特点和难点,包括网格划分、材料定义、边界条件设置等方面的具体操作步骤。通过实例展示了如何优化仿真流程,提高仿真精度,从而为增材制造的实际应用提供理论支持和技术指导。 适合人群:从事增材制造研究的技术人员、工程师及相关领域的科研人员。 使用场景及目标:适用于希望深入理解和掌握增材制造仿真技术的研究者和从业者,旨在帮助他们优化制造工艺,提升产品质量,解决实际生产中的难题。 其他说明:文章不仅提供了详细的理论讲解,还分享了许多实用的操作技巧和经验总结,使读者能够更快地上手并应用于实际工作中。
DeepSeek 提示词设计、幻觉避免与应用(50页)
《中医馆小程序观摩 demo 源码简介》 本资源为中医馆小程序观摩 demo 源码,是极具价值的学习资源。该源码完整呈现了中医馆小程序的架构与功能实现逻辑,涵盖多个核心板块。 从界面设计看,有简洁美观且贴合中医文化风格的用户交互页面,方便患者操作。在功能模块方面,具备挂号预约系统,患者能便捷预约专家号、普通号,还可查看医生排班;诊疗记录管理功能,详细记录患者病情、诊断、药方等,便于医生回顾与后续治疗参考;中药知识科普板块,介绍各类中药材功效、适用病症及使用禁忌,增加患者对中医的认知。 其代码结构清晰,注释丰富,无论是对于初学者了解小程序开发流程、熟悉前端框架运用,还是有一定经验的开发者深入研究特定功能实现,如数据库交互优化、接口安全管理等,都有极大帮助。开发者可借鉴其设计模式与技术选型,快速上手并开发出功能更完善、用户体验更佳的中医馆相关小程序或其他医疗健康类应用。总之,这是一份不可多得的学习资源,助力开发者提升技术水平,拓展开发思路。
第19.2章-【星曈科技】openmv H7 plus openmv视觉循迹功能-完成视觉识别指定区域 OpenMV视觉模块循迹_巡线功能 STM32F103C8T6视觉巡线小车
内容概要:本文介绍了“捉妖主升浪指标”的具体实现代码及其应用逻辑。该指标主要用于股票市场技术分析,通过一系列复杂的数学运算和条件判断,识别股票价格走势中的关键节点。核心公式包括平台突破、主力筹码、RSI等技术指标的计算,以及多个条件组合来判断不同类型的“捉妖”信号,如突破捉妖、拉升捉妖、逼空捉妖、超跌捉妖等。每个信号都有特定的颜色标识,并在图表上显示相应的提示信息。 适合人群:对股票交易和技术分析有一定了解的投资者,尤其是希望借助技术指标提高选股效率的专业人士或资深股民。 使用场景及目标:①用于股票市场的技术分析,帮助投资者识别潜在的强势股;②结合其他分析工具,为买卖决策提供参考依据;③通过捕捉短期爆发性上涨机会,优化投资组合收益。 阅读建议:由于该指标涉及较多专业术语和技术细节,建议读者先熟悉常用的技术分析方法,再深入研究此指标的具体实现逻辑。同时,在实际操作中应结合市场情况灵活运用,避免机械套用。
《基于STM32、ESP8266、微信小程序搭建的MQTT智能家居设计资料.zip》是一份极具价值的学习资源。它详细展示了如何结合嵌入式技术与移动互联网技术,实现智能家居系统的远程控制与实时监控。通过这份资料,学习者可以深入了解STM32微控制器的硬件设计、ESP8266 Wi-Fi模块的通信编程,以及微信小程序的用户界面开发。该资源不仅提供了完整的项目代码和文档说明,还强调了数据安全和用户体验的重要性,非常适合物联网和智能家居领域的初学者及进阶者学习参考。
小程序源码 - 海报组件:打造个性化朋友圈分享体验 本资源是一份极具实用价值的学习资源,聚焦于小程序中的海报组件开发。它旨在帮助开发者掌握生成朋友圈分享海报并生成图片的关键技术,为丰富小程序的社交分享功能提供有力支持。 该源码详细展示了如何构建一个高效且美观的海报组件。从布局设计到样式设置,再到动态数据的绑定与处理,每一个环节都经过精心打磨。通过巧妙运用前端技术,实现了根据不同场景和需求,灵活生成个性化的朋友圈分享海报。无论是电商推广、活动宣传还是内容分享,都能借助此组件快速创建吸引人的海报图片,提升用户分享的积极性和传播效果。 这份资源对于想要深入学习小程序开发的人员而言,是一份不可多得的学习素材。它不仅提供了实际可运行的代码示例,还蕴含着丰富的开发思路和技巧,能够帮助开发者快速理解并应用相关技术,提升在小程序海报组件开发方面的能力,为打造更具竞争力的小程序应用奠定坚实基础。
内容概要:本文详细介绍了基于西门子1500 PLC的大型物流分拣线项目,涵盖了硬件组态、SCL编程和人机界面(HMI)配置。项目涉及18个远程IO模块和39个ST40 CPU,旨在提高分拣效率和准确性。硬件部分重点描述了远程IO模块和扫码枪的配置,确保系统的稳定性和通信质量。软件部分则通过SCL编程实现了分拣逻辑,包括根据扫码信息确定分拣路径、处理不同运营模式下的分拣策略等。HMI配置方面,使用了KTP1200触摸屏提供实时监控和操作界面,增强了系统的易用性和透明度。 适合人群:从事工业自动化、PLC编程和物流系统设计的专业工程师和技术人员。 使用场景及目标:适用于需要构建或优化自动化分拣系统的物流中心。主要目标是提高分拣效率和准确性,减少人工干预,确保系统的稳定运行。 其他说明:文中还分享了一些实用技巧和调试经验,如处理扫码枪数据、优化HMI界面设计等,为后续项目实施提供了宝贵的参考资料。
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能看懂并调试代码。 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip 地铁图小程序源码.zip地铁图小程序源码.zip地铁图小程序源码.zip
经营分析中的指标勾稽关系(15页PPT)
本工具用于扫描您指定的硬盘分区或目录下的文件,自动根据文件大小,创建时间以及文件名称排列并显示可能重复的文件。
MySQL数据库备份多循环.sh
内容概要:本文详细介绍了基于Lumerical FDTD仿真的逆向设计片上功率分束器项目。首先概述了Lumerical FDTD仿真的基础概念及其在光学仿真领域的应用,接着重点讲解了逆向设计的核心思想,即通过定义目标输出反推得到满足条件的结构。文中提供了多个代码片段展示如何创建仿真区域、定义目标分束比例、更新仿真结构、运行仿真、计算误差并调整结构参数。此外,还分享了完整的项目工程文件和一份详细的1.7万字报告,涵盖了从项目背景、原理阐述到具体仿真步骤、逆向设计算法分析、结果讨论和优化方向等多个方面。 适合人群:从事光通信、集成光学研究的专业人士,尤其是对Lumerical FDTD仿真和逆向设计感兴趣的科研人员和技术开发者。 使用场景及目标:适用于希望深入了解片上功率分束器设计原理及其实现方法的研究人员;帮助读者掌握Lumerical FDTD仿真工具的具体使用技巧;为相关领域的创新设计提供参考案例和支持。 其他说明:该项目不仅展示了逆向设计理念的实际应用,还强调了在实际操作中遇到的问题及解决方案,如参数调整、结构优化、网格划分等。同时,通过大量实例代码和图表,使读者能够更好地理解和复现实验过程。
内容概要:本文详细介绍了Linux缓存机制及其对系统性能的提升作用。文章首先通过类比解释了缓存机制的重要性,随后阐述了缓存机制的工作原理,包括读取过程、写入策略(回写和写透缓存)、以及缓存回收策略(如LRU)。接着,文章分类讲解了不同类型的缓存,如文件系统缓存、页面缓存和缓冲缓存,并具体说明了它们在Web服务器和数据库查询中的应用。最后,文章介绍了如何查看和管理Linux缓存,包括释放缓存和管理Swap交换分区的方法,展示了缓存机制在实际场景中的性能优化效果。 适合人群:对Linux系统有一定了解的系统管理员、开发者和技术爱好者。 使用场景及目标:①理解Linux缓存机制的基本概念和工作原理;②掌握如何通过缓存机制优化系统性能,特别是在Web服务器和数据库查询方面;③学会使用相关命令查看和管理缓存,以应对不同的系统需求和性能问题。 其他说明:随着技术的发展,未来的缓存技术将在智能化和自动化方向取得更大突破,为系统管理员提供更便捷的管理和监控手段。文章鼓励读者深入探索Linux缓存机制,以更好地理解和优化系统性能。
内容概要:本文详细介绍了如何利用欧姆龙PLC通过RS485通信实现Modbus RTU主站通讯的方法。主要内容分为硬件配置和软件编程两大部分。硬件方面,强调了RS485模块的选择和设置,特别是波特率、数据位、停止位等参数的配置。软件编程则涵盖了读操作和写操作的具体实现步骤,包括CRC校验的应用、功能码的选择以及轮询机制的设计。此外,文中提供了具体的代码示例,帮助读者更好地理解和实施。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉欧姆龙PLC和Modbus RTU协议的用户。 使用场景及目标:①快速搭建欧姆龙PLC作为Modbus RTU主站的通信环境;②简化配置流程,提高工作效率;③解决传统配置方法中存在的复杂性和不确定性。 其他说明:文中提到的功能块适用于多种型号的欧姆龙PLC,如CP1H、CP1L、CJ2M等。同时,针对特定型号(如CP2E)给出了特殊的注意事项。文中还提供了一些实用的小技巧,如使用外部CRC校验工具简化读操作,以及采用轮询方式优化多从站通信。
内容概要:本文档《计算机课后习题精选(附详细解答)》涵盖数据结构与算法、操作系统、计算机网络、数据库、编程基础五大模块,通过精选习题及其详细解答,帮助读者巩固计算机专业基础知识。例如,在数据结构与算法部分,提供了链表节点删除、二叉树最大深度计算等典型题目及其Python代码实现;操作系统部分讲解了进程调度(FCFS、SJF)、页面置换算法(FIFO、LRU);计算机网络涉及IP子网划分、TCP三次握手过程;数据库部分包括SQL查询语句编写、事务ACID特性解释;编程基础则包含时间复杂度分析和字符串处理。每个章节都配有详细的解题步骤与代码实现。 适合人群:计算机相关专业学生以及希望提升计算机基础知识的技术人员。 使用场景及目标:①作为计算机专业课程的辅助教材,帮助学生课后复习和加深理解;②为准备技术面试的求职者提供练习素材,提高解决实际问题的能力;③通过做题实践加强对计算机基础理论知识的掌握。 阅读建议:读者应结合自身情况选择性地进行练习,对于不懂的地方可以反复研读解答过程并尝试自己动手实现代码,同时建议建立错题本记录易错知识点,以便日后复习。
数据结构是计算机科学中的一个核心概念,它研究数据的组织、存储和操作方式。掌握数据结构对于解决复杂问题、优化程序性能以及进行高效的数据处理至关重要。本文将系统地介绍数据结构的基本概念、常见类型以及应用实例,帮助读者从入门到精通数据结构。数据结构是计算机科学中的基础概念,掌握它对于解决复杂问题和优化程序性能至关重要。通过学习线性表、树、图、哈希表等常见数据结构,以及排序和查找等算法,可以显著提高编程能力。同时,利用丰富的学习资源,如在线教程、书籍和开源项目,可以更系统地掌握数据结构知识。
# 基于Webpack的模块化打包项目 ## 项目简介 本项目使用Webpack作为模块化打包工具,实现了项目代码的模块化打包,支持开发环境和生产环境的构建,支持CSS和JavaScript文件的编译和打包,支持第三方库的分离,以及CSS文件的压缩和分离。 ## 项目的主要特性和功能 1. 模块化打包使用Webpack作为模块化打包工具,支持开发环境和生产环境的构建。 2. CSS和JavaScript编译支持CSS和JavaScript文件的编译和打包,支持LessScss预处理器。 3. 第三方库分离支持第三方库的分离,减少打包后的文件体积。 4. CSS压缩和分离支持CSS文件的压缩和分离,优化打包后的文件体积。 5. 代码热替换支持代码热替换(HMR),提升开发效率。 6. 文件哈希值支持文件名哈希值,提升浏览器缓存效率。 7. 打包分析支持使用webpackbundleanalyzer插件对打包后的代码进行可视化分析。 ## 安装使用步骤
factorymode_crack.exe -l xxx open-i 192.168.1.1-u CMCCAdmin -pw aDm8H%MdA-p80 输入。以上两行代码以后会返回如下结果: I version:3.1 Enter 192.168.1.1 FactoryMode Success:FactoryModeAuth.gch?user=4945gDkE&pass=c7Ts0a6X 返回的结果:Success表示开启临时telnet成功,user=4945gDkE等于号后面此为账号,pass=c7Ts0a6X此为密码。 注意区分大小写,注意输入密码时候不会显示,只要输入正确就可以,注意此账号密码为开启光猫的telnet临时通信。 5,CMD通过telnet连接光猫。 输入如下命令: telnet 192.168.1.1 然后输入我们刚刚得到的临时账号和密码 注意区分大小写,注意输入密码时候不会显示,只要输入正确就可以 之后我们就可以用命令对光猫做修改了,下面写几个命令,小伙伴自行选择 sendcmd 1 DB set DevAuthInfo 1 Level 1 上一条命令是把光猫背面的普通用户提升为超级管理员。 sendcmd 1DB set DevAuthlnfo 0 User admin sendcmd 1 DB set DevAuthlnfo 0 Pass admin 上两条命令是设置修改超级管理员的用户名和密码xxxxxx可自行设置。 setmac show sendcmd 1 DB p TelnetCfg sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1 sendcmd 1 DB set TelnetCfg 0 TS_UName root sendcmd 1 DB set TelnetCfg 0 TSLan_UN