new Handler(getMainLooper())与new Handler()的区别

Handler 在Android中是一种消息处理机制。

new Handler(); 创建handler对象,常用在已经初始化了 Looper 的线程中调用这个构造函数(即非主线程),如果感觉不好理解,可以把Handler handler = new Handler() 理解为常用在Activity,Fragment,带有界面的地方,如果用在自定义View 或者其他工具类中,不带界面的地方就会报错,如果就是这个,很早之前自己写的一个,如下

处理方法在非主线程中使用这种无参数构造方法创建 Handler 之前,通常需要先调用 Looper.prepare() 初始化 Looper,然后再调用 Looper.loop() 开始消息循环。

这种情况其实还可以使用 new Handler(getMainLooper())

new Handler(getMainLooper())创建的 Handler 会绑定到当前应用的主线程(也称为UI线程)的 Looper。这意味着通过这个 Handler 发送的消息和运行的 Runnable 将会在主线程中执行,这对于更新UI组件或其他需要在主线程中进行的操作非常有用

getMainLooper() 的作用:

getMainLooper() 在 Android 系统中是一个方法,它属于 Looper 类,用于获取当前应用的主线程(也称为 UI 线程)的 Looper 对象。每个线程在Android中如果要处理消息循环(Message Loop),就需要关联一个Looper对象,而主线程在系统启动时已经默认创建并初始化了一个Looper。

总体而言:

new Handler(getMainLooper()):确保 Handler 在主线程的消息队列中处理消息。

当在非主线程环境下需要确保操作能在主线程(UI线程)执行时,应明确使用 new Handler(getMainLooper())

new Handler():如果没有明确指定Looper,那么会默认关联到当前线程的Looper,因此若在非主线程且未准备Looper的情况下使用,将会引发异常。

就是在主线中,知道上下文,(做Android APP开发的很容易理解,就是activity,Fragment界面,一般长使用这个)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis学习指南(11)-Redis的有序集合数据类型介绍

文章目录 特点和用途常用命令插入操作查询操作删除操作 示例总结 Redis的有序集合数据类型是一种高效的数据结构,能够存储多个成员和对应的分值,并能够根据分值进行快速的查找、插入和删除操作。本文将详细介绍Redis的有序集合数据类型,包括其…

【PostgreSQL】函数与操作符-数学函数和操作符

PostgreSQL函数与操作符-数学函数和操作符 PostgreSQL提供了许多数学函数和操作符,以处理数值数据。以下是一些常用的数学函数和操作符: PostgreSQL数学操作符 下表展示了所有可用的数学操作符。 操作符描述例子结果加2 35-减2 - 3-1*乘2 * 36/除&a…

曲面上偏移命令的查找

今天学习老王的SW绘图时,遇到一个命令找不到,查询了一会终于找到了这个命令,防止自己忘记,特此记录一下,这个命令就是“曲面上偏移”,网上好多的教程都是错误的,实际上这个命令没有在曲面里面&a…

MySQL(三)——函数

上期文章 MySQL(二)——SQL 文章目录 上期文章字符串函数数值函数日期函数流程函数总结 函数:一段可以直接被另一段程序调用的程序或代码 字符串函数 函数功能CONCAT(S1,S2,…Sn)字符串拼接,将S1,S2,…Sn拼接成一个字符串LOWER…

js原型和new过程

在JavaScript中,原型和继承是实现代码复用和扩展的重要机制。而new关键字则是用来创建对象的。 原型(Prototype): 在JavaScript中,每个对象都有一个原型(prototype)对象,这个原型对…

Docker查找docker组及用户

查找所有组及用户: cat /etc/passwd 可以查看所有用户的列表w 可以查看当前活跃的用户列表cat /etc/group 查看用户组在/etc/group 中的每条记录分四个字段: 第一字段:用户组名称; 第二字段:用户组密码; 第…

快速前端开发01

前端开发 1 前端开发1.快速开发网站2.浏览器能识别的标签2.1 编码(head)2.2 title(head)2.3 标题2.4 div和span2.4.5 超链接2.4.6 图片小结2.4.7 列表2.4.8 表格2.4.9 input系列(7个)2.4.10 下拉框2.4.11 多…

php踩坑:ajax向php提交整型值,$_POST中获取到的却是string类型的值

前端ajax提交number类型的值-1: $.ajax({url : theUrl,data : {data: {s: -1} // s是整数值-1},type: post,success: function(data) {console.log(data);} }php端获取到的却是string类型的"-1": $data$_POST[data]; // {"s":&…

Flask 项目怎么配置并创建第一个小项目?附上完成第一个小案例截图

目录 1. 为什么要学习 flask? 2. flask 是什么? 3. flask 如何使用? 要安装 Flask,可以按照以下步骤进行: 4. 使用流程 4.1. 新建项目 4.1.1. 打开 pycharm,新建项目 4.1.2. 设置目录,并…

MySql前言

🎥 个人主页:Dikz12🔥个人专栏:MySql📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 数据库有哪些软件?? Mysql MySql数…

一道使用LinkedList和Stack解决的算法题

一、无法吃午餐的学生数量 学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮&#…

华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳

华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳 Excerpt 文章浏览阅读1.2k次。鸿蒙开发,获取手表心跳,按钮点击后触发的方法,我们将跳转页面的代码写在这个位置就可以实现点击按钮进行跳转页面的动作。在HTML文件“index.hml”,添加按钮,这里按钮用到是标…

14.鸿蒙HarmonyOS App(JAVA)时钟组件计时器倒计时单选按钮复选框开关switch与开关按钮ToggleButton图像组件示范

鸿蒙HarmonyOS App(JAVA) 时钟组件 计时器 倒计时 单选按钮 复选框 开关switch 开关按钮ToggleButton 图像组件 ability_main.xml <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.co…

HarmonyOS4.0系列——05、状态管理之@Prop、@Link、@Provide、@Consume,以及@Watch装饰器

状态管理 看下面这张图 Components部分的装饰器为组件级别的状态管理&#xff0c;Application部分为应用的状态管理。开发者可以通过StorageLink/LocalStorageLink 实现应用和组件状态的双向同步&#xff0c;通过StorageProp/LocalStorageProp 实现应用和组件状态的单向同步。…

同一对象放入集合转换成json异常记录

1、错误格式 [{"conditions":[{"field":"name","logic":"","relationship":"EQ"}],"logic":"AND"},{"$ref":"$[0]"}] 2、产生错误原因 单个对象想产生多条数…

关于群晖ARPL界面能出现ip但是使用Synology Assistant搜索不到ip问题 及解决方法

文章引用ing304 频道文章&#xff1a;https://qun.qq.com/qqweb/qunpro/share?_wv3&_wwv128&appChannelshare&inviteCode20jx8dPsU2z&contentID1m4NKs&businessType2&from181174&shareSource5&bizka 前言 当进入该界面后 提示IP无法访问&a…

【学习心得】图解Git命令

图解Git命令的图片是在Windows操作系统中的Git Bash里操作截图。关于Git的下载安装和理论学习大家可以先看看我写的另两篇文章。链接我放在下面啦&#xff1a; 【学习心得】Git快速上手_git学习心得-CSDN博客 【学习心得】Git深入学习-CSDN博客 一、初始化仓库 命令&#xff…

eBPF运行时安全

引言 eBPF作为当前linux系统上最为炙手可热的技术&#xff0c;通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控&#xff0c;当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目&#xff0c;致力于提供高效的容器通信和强大的安…

2023.12.16

邻接矩阵构造 typedef struct {int arcs[MaxVexNum][MaxVexNum];int vexnum, arcnum; } AMGraph; 其中&#xff0c;arc是一个二维数组&#xff0c;用于表示各个顶点之间的边的关系。vexnum表示图中顶点的数量&#xff0c;arcnum表示图中边的数量。 示例 AMGraph graph;…

Java代码审计FastJson反序列化利用链跟踪动态调试autoType绕过

目录 0x00 前言 0x01 基础参考 JNDI注入实例 使用type加入User类解析 FastJson历史漏洞简介 0x02 FastJson 1.2.24 利用链分析 调试过程 构造Poc思路 CC链关键流程 0x03 FastJson 1.2.25-1.2.47 利用链分析 1、开启autoTypeSupport&#xff1a;1.2.25-1.2.41 调试过…