Handler

Handler 源码解析——Handler的创建 前言 Android 提供了Handler和Looper来来满足线程间的通信,而前面我们所说的IPC指的是进程间的通信。这是两个完全不同的概念。 Handler先进先出原则,Looper类用来管理特定线程内消息的交换(MessageExchange); 1、为什么会有Handler机制? 我们刚说Handler机制的主要作用是将某一任务切换到特定的线程来执行,我们做项目可能都遇到过AN... 阅读详情
package com.xxx.androidutil;

import java.lang.ref.WeakReference;
import android.os.Handler;
import android.os.Message;

/**
 * Handler工具
 * 1.生成一个唯一的ID,App全局唯一,这样可以防止可能发生的消息ID重复而导致的各种问题。
 * 2.静态Handler接口, 用来消除Handle可能导致的泄漏。
 */
public class HandlerUtil { 
private static int mId = 0x1000000;

public interface MessageListener {
public void handleMessage(Message msg);
}

/**
* 生成一个唯一的Message ID,App全局唯一,这样可以防止可能发生的消息ID重复而导致的各种问题。
*/
public static final int generateId() {
return ++ mId;
}

/**
* 用来消除Handle可能导致的泄漏
*/
public static class StaticHandler extends Handler {
WeakReference<MessageListener> listener;


/**
* @param listener
* 必读: 此listener必须由Activity实现该接口(推荐)或者是宿主Activity的类成员 :
* 这里是弱引用, 不会增加变量的引用计数, 使用匿名变量会导致listener过早释放(请参考此类的引用示例)
*/
public StaticHandler(MessageListener listener) {
this.listener = new WeakReference<MessageListener>(listener);
}

public StaticHandler() {
}


@Override
public void handleMessage(Message msg) {
MessageListener listener = this.listener.get();
Util.log("Load", "StaticHandler.handleMessage listener=" + listener);
if (listener != null) {
listener.handleMessage(msg);
}
}
}

}


用法:

    StaticHandler handler = new StaticHandler(mHandlerListener);
    Message msg = handler.obtainMessage(MSG_ADDLISTENER);
    msg.obj = lis;
    msg.sendToTarget();


android中封装handler 一个封装好的handler android中,handler是我们经常打交道的一个class,但在activity或者fragment中,直接new出来,然后在post或者handleMessage的代码一加,再完美的结构也会变得乱糟糟的。有必要封装一个handler,作为日常的结构化使用。下面给出一些代码的片段,来看怎么封装handler。 首先我们给它起一个响亮的名字:UiThreadExecutor,顾名思义就是在ui线程中执行的executor,简单明了。 既然是对handler的封装,handle 阅读详情

相关推荐

Handler相关面试题

常见面试题: Handler相关 一.谈一谈你对handler的认识,例如:机制和实现等。 handler机制图解: handler常见使用过程: ①.子线程向主线程发送消息: 在主线程中新建Handler实例,并重写handleMessage()方法用于处理子线程传过来的message; 通过Message.obtain()方法获取到消息msg,然后将需要传递给主线程的信息通过msg的what、obj等字段传递; 通过handler的sendMessage发送msg消息,然后在hand

龚礼鹏的博客 3171

Handle 源码分析与学习

class ActivityThread{ public static void main(String[] args) { //构造一个主线程对应的Looper实例,存放在Looper.sMainLooper中 Looper.prepareMainLooper(); //... //创建一个Handler对象实例 if (sMainThreadHandler == null) { sMainThreadHandler = thread.getH

不会写代码的丝丽 635

S7-1200五轴伺服系统PLC控制方案与调试技巧

工业自动化领域中,多轴伺服控制是实现精密加工的核心技术。基于PROFINET实时通信协议和PLCopen运动控制标准,现代PLC(如西门子S7-1200)能够实现多轴高精度同步控制。其技术原理是通过等时同步模式确保各轴运动的时序一致性,结合PID调节和电子齿轮比实现位置闭环。这种方案在数控机床、3D打印等场景具有重要应用价值。本文以五轴联动系统为例,详细解析了S7-1200与V90伺服驱动器的硬件组态方案,包括PROFINET环网配置和IRT同步设置。在软件层面,重点介绍了基于TIA Portal的工艺对象

weixin_34332905的博客 415

【MySQL】MySQL 之 handler 的详细使用及说明

起序:在 Web 题遇到的,也算是骚姿势吧,希望帮到有需要的同志。 一、简介 MySQL 除了可以使用 select 查询表中的数据,也可使用 handler 语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler 语句并不具备 select 语句的所有功能。它是 MySQL 专用的语句,并没有包含到SQL标准中。handler 语句提供通往表的直接通道的存储引擎接口,可以用于 MyISAM 和 InnoDB 表。 二、语法 1、官方语法 官方给出的:HANDLER Statement

边扯边淡 1万+

1688店铺所有商品API接口(整店商品查询API接口)

1688店铺所有商品API接口、1688店铺列表API接口,1688店铺API接口,1688店铺查询商品API接口,1688店铺商品API接口,1688店铺详情接口,1688商品API接口

tbprice的博客 1568

从TM1到TM9:手把手教你用Wireshark抓包分析LTE下行调度与传输模式切换

本文详细解析了如何使用Wireshark抓包分析LTE下行调度中的传输模式切换,从TM1到TM9的动态调整过程。通过实战案例,包括小区边缘移动、高速场景和多用户调度,揭示eNodeB如何基于信道质量指标(如RSRP、SINR)动态切换传输模式,并提供关键信令解析和优化建议,助力网络工程师提升LTE网络性能。

weixin_42651748的博客 315

再论Handler—Handler事件分发、Handler线程切换原理解析

再论Handler—Handler原理解析 Handler,无论你菜鸟还是像我一样的老菜鸟,都无法避免这个亘古不灭的话题,只有了解学会Handler的原理,你才能变成一个出的厅堂下得厨房的优秀的老菜鸟。其实同类优秀的帖子已经很多了,但是为了强化记忆我的理解,还是想再次记一下,我心中的Handler。 要介绍Handler,就必须要介绍与它息息相关甚至“同为一体”的其它几个类:Looper、MessageQueue、Message。所以本篇文章就分为三个部分: Handler、Looper、MessageQ

blankmargin的博客 2636

常用的数据结构以及常用的算法

常用的数据结构以及常用的算法 常用数据结构 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。 一、线性表 线性结构: 最常用、最简单的一种数据结构。 线性表: 典型的线性结构。基本特点是线性表中的 数据元素有序且有限。结构中: ① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每

qq_47605698的博客 1447

stm32 各种类型错误:HardFault_Handler、MemManage_Handler、BusFault_Handler、UsageFault_Handler

STM32出现HardFault_Handler故障的原因主要有两个方面: 1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。 2、堆栈溢出。增加堆栈的大小。 MemManage_Handler:访问了内存管理单元(MPU)定义的不合法的内存区域,比如向只读区域写入数据。 BusFault_Handler:在fetch指令、数据读写、fetch中断向量或中断时存储恢复寄存器栈情况下,检测到内存访问错误则产生 BusFault。 UsageFault...

灵哎惹,凌沃敏的博客 1万+

pcb印刷电路缺陷检测----数据集准备

PKU-Market-PCB 印刷电路板 (PCB) 瑕疵数据集是一个公共合成 PCB 数据集,包含 1,386 张图像,具有 6 种缺陷(漏孔、鼠咬、开路、短路、杂散、杂铜),可用于图像检测、分类和配准任务。

qq_30190551的博客 4429

SAP 系统和银行系统通过 SM2 加密算法进行集成

SM2 是基于椭圆曲线离散对数问题(ECDLP)的一种公钥密码算法。椭圆曲线加密的核心原理,是利用了一个数学难题:在椭圆曲线群上,已知曲线上两点的运算结果,逆向推导出这两个点的具体信息是非常困难的。这样的复杂度使得基于椭圆曲线的密码体制比传统的 RSA 更加难以破解。在 SM2 加密中,公钥和私钥的生成与传统的椭圆曲线加密类似。选择一个椭圆曲线和一个基点 P。使用私钥 d,计算公钥 P’ = d * P。私钥 d 保密,而公钥 P’ 可公开分发,用于加密数据。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1212

Handler完全解读——Handler的使用

Handler完全解读——Handler的使用 Handler是什么 Handler是Android给我们提供用于更新UI的一套机制,也是一套消息处理机制。我们用它可以发送消息,也可以用它处理消息。在Android开发中有着非常重要的地位。 为什么要使用Handler 当一个应用程序运行时,它会创建一个进程。这个进程就是我们的主线程(UI线程&amp;Activity Thread) 。在主线程中...

N0tExpecterr0r的博客 8216

七天征服AutoSAR/SomeIP_01速成配置并代码生成

本文为AutoSAR中SomeIP配置开发的实操指南摘要,重点介绍通过通信矩阵快速构建SomeIP工程的方法。核心内容包括:1)基于Excel通信矩阵生成系统描述文件(arxml);2)在AutoSAR工具中导入文件自动生成协议栈配置,涵盖ETHIF、SoAd等模块;3)关键报错处理(COM/PDUR/SOAD/SD模块的配置修正);4)SomeIPXF的数据编解码配置;5)SWC组件与RTE任务映射。教程强调"先完成再完美"的实践原则,指导开发者快速生成基础代码框架,为后续协议调试奠定

大叔带刺的博客 303

全局Handler的封装

相信大家写Android项目的时候,使用Handler发送消息是非常常见的,可以说在项目中有非常多的地方使用到Handler,于是这时候考虑怎么去封装一个Handler,使用的时候也比较方便,又可以避免重复去创建Handler对象,我们会想到全局就使用一个Handler,那么怎么全局去封装一个Handler的,我是这么来设计的:     首先定义一个类GlobalHandler,继承...

Crazyencode的博客 4665

【知识分享】车载以太网PCB布局设计指南

本文将深入探讨在设计车载以太网设备的印刷电路板(PCB)时需要着重考虑的若干关键主题。这些主题广泛涵盖了数据布线设计,以确保其符合信号完整性(SI)和电磁兼容性(EMC)标准;外部元器件的合理摆放;以及采取有效的抗电磁干扰(EMI)布局策略等方面。通过全面且细致地处理这些关键环节,能够显著提升车载以太网设备的性能与可靠性。

一只豌豆象的博客 1352

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

asio中的handler

申请和释放!defineddefined对于其它重载的最后是调用命名空闲的allocate和deallocate,最后就是调用命令空间和!defined!definednewdelete以linux平台为例fill:#333;stroke:1;fill:none;important;important;important;important;important;important;important;important;important;

多看多听多总结 1039

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Handler的实现原理

处理过程:从handler中获取一个消息对象,把数据封装到消息对象中,通过handler的send…方法把消息push到MessageQueue队列中。Looper对象会轮询MessageQueue队列,把消息对象取出。通过dispatchMessage分发给Handler,再回到调用Handler实现的handleMessage方法处理消息。流程图:Handler的实现中适及以下对象:1、:负责消息的发送和处理2、:消息对象3、:消息队列(用于存放消息对象的数据结构)4、

Hunter2916的博客 831

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MySQL关于HANDLER命令的说明

文章目录一、 语法二、为什么要用HANDLER而不是“SELECT”语句 一、 语法 官方给出的格式: HANDLER tbl_name OPEN [ [AS] alias] HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...) [ WHERE where_cond...

miaoyibo12的博客 759

Ansible的handler

Ansible的handler

duke_ding2的博客 1033

mysql handler 详解_Mysql HANDLER语句

HANDLER语法HANDLER tbl_name OPEN [ [AS] alias]HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)[ WHERE where_condition ] [LIMIT ... ]HANDLER tbl_name READ index_na...

weixin_30641041的博客 695

handler——handler的使用例子

转自http://blog.youkuaiyun.com/fdaopeng/article/details/7863840 Android UI操作并不是线程安全的,所以无法在子线程中更新UI。但Andriod提供了几种方法,可以在子线程中通知UI线程更新界面: Activity.runOnUiThread( Runnable ) View.post( Runnable ) V

chuntiandejiaobu10的专栏 393

全局handler

全局Handler封装,优雅的书写handler的UI刷新界面 在Android开发中我们会经常使用handler进行ui界面的刷新,这主要是源于Android的线程机制和消息机制。Android不允许开发者在主线程中刷新ui界面,所以我们会经常用到消息机制,但是频繁的创建handler有可能导致内存泄漏,而且容易造成代码冗余,影响代码质量,所以我们要设置一个全局的handler,通过接口实现来实现ui刷新。 请看代码: import android.os.Handler; import andro

Android_data的博客 1554

Android Handler的源码分析

1、简述 由于安卓中为了确保界面的更新同步,限制了只有UI(主)线程可以更新界面,但是UI线程不能执行耗时操作,相关的文件读取、数据加载和网络请求等操作,需要放置在子线程进行处理,但处理完成后怎样将子线程的处理结果及时的发送至主线程呢? 此时就需要引入Handler的运行机制,通过Hnadler的创建、发送和处理方式,实现跨线程的数据通信。 其实Handelr主要用于线程间通信的,但在安卓开发中一...

xk7298的博客 1946

Handler机制

1.为何引入Handler机制 Handler是线程间通讯的机制,Android中,网络访问、文件处理等耗时操作必须放到子线程中去执行,否则将会造成ANR异常。 ANR异常:Application Not Response 应用程序无响应 产生ANR异常的原因:在主线程执行了耗时操作,对Activity来说,主线程阻塞5秒将造成ANR异常,对BroadcastReceiver来说,主线程阻塞10秒将会造成ANR异常。 解决ANR异常的方法:耗时操作都在子线程中去执行 但是,Android不允许在子线程去修

延成的博客 4682

Android Handler

Android Handler是一种事件驱动模型,用于实现线程切换或执行延时任务。它在整个Android开发体系中占据着很重要的地位,可以用于保证多个任务在执行时的有序性。在Android系统中,主线程有特殊地位,因此像EventBus和Retrofit这类并非Android独有的第三方库,都是通过Handler来实现对Android系统的特殊平台支持。Android Handler的主要作用是将消息(Message)或Runnable对象发送到主线程的消息队列中,以便在主线程中执行。

liuning1985622的博客 1042
上一篇: Android比较日期
下一篇: Android广播机制(两种注册方法)与 中断广播
HabbyGe
博客等级 码龄16年 46粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值