返回顶部
首页 > 资讯 > 精选 >android中handler.post和handler.sendMessage的区别是什么
  • 576
分享到

android中handler.post和handler.sendMessage的区别是什么

androidhandler.post 2023-05-30 21:05:26 576人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关Android中handler.post和handler.sendMessage的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 异步更新U

本篇文章给大家分享的是有关Android中handler.post和handler.sendMessage的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

异步更新UI

延时任务

但是我一直有一个困惑,就是handler.post(r)这个方法有什么独特的作用?

通过看源码发现,post这个方法是把任务r转成一个message放进了handler所在的线程中的messageQueue消息队列中,并且是立刻发送的消息,这样它既不是异步的也不是延时的,所以问题来了:

它和sendMessage()有什么区别?

它有什么独特作用呢?

下结论之前我们先通过源码来分析:

  public final boolean post(Runnable r)  {    return sendMessageDelayed(getPostMessage(r), 0);  }  public final boolean sendMessageDelayed(Message msg, long delayMillis)  {    if (delayMillis < 0) {      delayMillis = 0;    }    return sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis);  }private static Message getPostMessage(Runnable r) {    Message m = Message.obtain();    m.callback = r;    return m;}

至此,我们可以得出结论:

handler.post和handler.sendMessage本质上是没有区别的,都是发送一个消息到消息队列中,而且消息队列和handler都是依赖于同一个线程的。

接下来我们再结合实际应用中的例子来分析:

分别用sendMessage和post完成同样的异步更新UI的任务:

private TextView tv_up;  private String new_str = "";    private Handler handler_post = new Handler();    Handler handler_senM = new Handler() {    public void handleMessage(Message msg) {      if (msg.what == 1) {                tv_up.setText(new_str);      }    };  };  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    new Thread(new Runnable() {      @Override      public void run() {        new_str = "更新UI";                handler_senM.sendEmptyMessage(1);                handler_post.post(new Runnable() {          @Override          public void run() {            tv_up.setText(new_str);          }        });      }    }).start();  }

从这段代码中我们可以看出:

post和sendMessage只是用法上的区别,本质是没有区别的。

最终总结:

post和sendMessage本质上是没有区别的,只是实际用法中有一点差别

post也没有独特的作用,post本质上还是用sendMessage实现的,post只是一中更方便的用法而已

以上就是android中handler.post和handler.sendMessage的区别是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: android中handler.post和handler.sendMessage的区别是什么

本文链接: https://lsjlt.com/news/221722.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • android中handler.post和handler.sendMessage的区别是什么
    本篇文章给大家分享的是有关android中handler.post和handler.sendMessage的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 异步更新U...
    99+
    2023-05-30
    android handler.post
  • Android中View.post和Handler.post的关系是什么
    这篇文章主要介绍“Android中View.post和Handler.post的关系是什么”,在日常操作中,相信很多人在Android中View.post和Handler.post的关系是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好...
    99+
    2023-06-30
  • Android中View.post和Handler.post的关系
    目录前言为什么要拿这二者来比较?View的渲染起点View.post的执行流程Handler.post()能像View.post()一样获取到宽、高数据吗?前言 View.po...
    99+
    2022-06-07
    view 关系 handler post Android
  • Android中post和send的区别是什么
    在Android中,"post"和"send"都是用于发送消息的方法,但它们具有一些区别。1. post:post方法用于在主线程的...
    99+
    2023-09-27
    Android
  • android和java的区别是什么
    从整体来讲,java和android的区别在于android程序是基于组件和配置的,而且android开发以java语言为开发工具,表面上看他们有点同宗不同门,但实际上区别十分大,android是一个主流智能手机操作系统,java是一种开发...
    99+
    2019-02-19
    java教程 android java 区别
  • Android中layout gravity和gravity的区别是什么
    在Android中,layout_gravity和gravity是用来控制View的对齐方式和位置的属性。1. layout_gra...
    99+
    2023-10-09
    Android
  • APP测试中IOS和Android的区别是什么
    这篇文章主要介绍“APP测试中IOS和Android的区别是什么”,在日常操作中,相信很多人在APP测试中IOS和Android的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”APP测试中IOS和A...
    99+
    2023-06-05
  • android插桩和hook的区别是什么
    Android插桩和Hook是两种不同的技术,用于在Android应用程序中修改或拦截代码的执行。插桩(Instrumentatio...
    99+
    2023-09-20
    android
  • MYSQL中#和$的区别是什么
    小编给大家分享一下MYSQL中#和$的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!他们之间的区别用最直接的话来说就是...
    99+
    2024-04-02
  • MySQL中“:=”和“=”的区别是什么
    小编给大家分享一下MySQL中“:=”和“=”的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!=只有在set和upda...
    99+
    2024-04-02
  • Mybatis中#和$的区别是什么
    这篇文章主要介绍“Mybatis中#和$的区别是什么”,在日常操作中,相信很多人在Mybatis中#和$的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis中#和$的区别是什么”的疑惑有所...
    99+
    2023-06-22
  • Servlet中/和/*的区别是什么
    这篇文章主要讲解了“Servlet中/和demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍旧有且仅能匹配/api/*/demo这个请求路径匹配顺序有时候一个URL会被多个urlPatterns所匹...
    99+
    2023-06-20
  • oracle中{}和${}区别是什么
    这篇文章主要介绍“oracle中{}和${}区别是什么”,在日常操作中,相信很多人在oracle中{}和${}区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”orac...
    99+
    2024-04-02
  • Android中bindservice和startservice有什么区别
    在Android中,bindService()和startService()是两个用于启动服务的方法,它们在功能和使用方式上有一些区...
    99+
    2024-02-29
    Android
  • android与java的区别是什么
    java是一门编成语言,而android是一个基于linux内核的手机操作系统。两者的关系在于,用java语言可以编写出应用程序安装在android,这也是现在java语言就业的一个方向。编程界网,大量的免费Java入门教程,欢迎在线学习!...
    99+
    2018-02-25
    java教程 android java 区别
  • java和android有什么区别?
    Android和JAVA区别:Android是主流智能手机的操作系统,JAVA是一种开发语言,两者没有好坏优势之分,只是两种职业岗位选择,学安卓从事移动互联方向开发,学JAVA从事软件方向开发,主要看个人选择,从学JAVA转移到安卓,学安卓...
    99+
    2020-09-26
    java教程 java android
  • php === 和==的区别是什么
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php === 和==的区别是什么?php中的==和===的用法及区别在开发中进场遇到数值匹配的问题,那么在进行匹配时,遇到下面的情况,你觉得结果是什么?<php ...
    99+
    2021-03-17
    php
  • ./ 和 sh 的区别是什么
    ./ 和 sh 的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。./ 和 sh的使用区别使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限;使用“sh”...
    99+
    2023-06-09
  • Android中Handler、Thread和HandlerThread有什么区别
    Handler是Android中用来处理消息和线程间通信的工具,主要用于将消息发送到消息队列,并在指定的时间处理这些消息。Han...
    99+
    2024-03-01
    android
  • php中float和double的区别是什么
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php中float和double的区别是什么为了区分 php中float和double的区别,我采用以下代码分别输出。$vad = 1.1; print gettyp...
    99+
    2018-12-12
    PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作