当前位置: 首页 > news >正文

档案门户网站建设方案搜索引擎有哪些平台

档案门户网站建设方案,搜索引擎有哪些平台,华为手机应用引擎,营销推广投放目录 核心组件延迟发送消息的工作原理具体步骤1. 创建 Handler:2.发送延迟消息3.消息入队列4.消息出队和处理: 关键点总结 在 Android 中,Handler 是用于在不同线程之间传递和处理消息的工具。它可以用于定时任务、延迟执行任务等。Handler 如何保证延迟发送消息的核…

目录

  • 核心组件
  • 延迟发送消息的工作原理
    • 具体步骤
      • 1. 创建 Handler:
      • 2.发送延迟消息
      • 3.消息入队列
      • 4.消息出队和处理:
  • 关键点
  • 总结

在 Android 中,Handler 是用于在不同线程之间传递和处理消息的工具。它可以用于定时任务、延迟执行任务等。Handler 如何保证延迟发送消息的核心在于其与 MessageQueue 和 Looper 的协同工作。

核心组件

  • Handler:
    用于发送和处理消息和可运行的任务(Runnable)。
  • MessageQueue:
    消息队列,存储所有待处理的消息。
  • Looper:
    循环从 MessageQueue 中取出消息并分发给相应的 Handler 进行处理。

延迟发送消息的工作原理

当你使用 Handler 的 postDelayed 或 sendMessageDelayed 方法时,消息会被添加到 MessageQueue 中,并带有一个指定的时间戳。Looper 会根据时间戳来决定何时处理这些消息。

具体步骤

1. 创建 Handler:

通常在主线程中创建一个 Handler,它会与主线程的 Looper 和 MessageQueue 关联。

    Handler handler = new Handler(Looper.getMainLooper());

2.发送延迟消息

使用 postDelayed 或 sendMessageDelayed 方法发送延迟消息或任务。

    // 延迟 2000 毫秒后执行 Runnable 任务handler.postDelayed(new Runnable() {@Overridepublic void run() {// 执行任务}}, 2000);// 延迟 2000 毫秒后发送消息Message msg = handler.obtainMessage();handler.sendMessageDelayed(msg, 2000);

3.消息入队列

Handler 将消息或任务添加到 MessageQueue 中,并带有一个执行时间(当前时间 + 延迟时间)。

    boolean sendMessageAtTime(Message msg, long uptimeMillis) {MessageQueue queue = mQueue;if (queue == null) {RuntimeException e = new RuntimeException(this + " sendMessageAtTime() called with no mQueue");Log.w("Looper", e.getMessage(), e);return false;}return enqueueMessage(queue, msg, uptimeMillis);}private boolean enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis) {msg.target = this;if (mAsynchronous) {msg.setAsynchronous(true);}return queue.enqueueMessage(msg, uptimeMillis);}

4.消息出队和处理:

Looper 不断循环,从 MessageQueue 中取出时间戳小于等于当前时间的消息进行处理。

    public static void loop() {final Looper me = myLooper();final MessageQueue queue = me.mQueue;for (;;) {Message msg = queue.next(); // 可能会阻塞if (msg == null) {// No message indicates that the message queue is quitting.return;}// 分发消息msg.target.dispatchMessage(msg);// 回收消息msg.recycleUnchecked();}}

关键点

  • 时间戳:
    每个消息在入队时都会带有一个时间戳,表示该消息何时可以被处理。
  • 消息队列排序:
    MessageQueue 会根据消息的时间戳进行排序,确保最早到期的消息最先被处理。
  • 循环检查:
    Looper 会不断循环检查 MessageQueue,一旦发现有到期的消息就立即处理。

总结

通过 Handler、MessageQueue 和 Looper 的协同工作,Android 可以实现延迟发送消息和任务的功能。Handler 将消息或任务添加到 MessageQueue 中,并带有一个执行时间戳。Looper 不断循环检查 MessageQueue,当发现有到期的消息时,立即取出并处理,从而实现延迟执行的效果。

Android 之 Handler
HandlerThread 和 Handler 区别
Android之Handler的post方法和sendMessage的区别
Android之同一个Thread线程里只能有一个Looper?(ThreadLocal)

http://www.yayakq.cn/news/265296/

相关文章:

  • 个人网站的建设方法和过程简约大气网站首页
  • 免费下软件的网站济南企业做网站推广网站
  • 做期货苯乙烯的网站济南市住房和城乡建设局网站
  • 无锡富通电力建设有限公司网站中小企业微网站建设
  • 创新的沈阳网站建设小程序开发外包报价表
  • 重庆网站优化公司江西中赣建设有限公司网站
  • 海尔集团网站是怎么做的广州网站优化公司如何
  • 网站别人能打开我打不开如何查公司注册信息及法人
  • php彩票网站建设教程营销推广的平台
  • 网站空间去哪里买的厦门网站建设 九来
  • 东莞大岭山建网站公司高雅不俗气的公司名字
  • 花都网站建设公司最新猪价
  • 域名有了怎么制作网站外链发布论坛
  • 做瑜伽网站网站的设计风格与特点
  • 南京市建设工程交易中心网站吉林省建设项目招标网
  • 静态网站源码下载有哪些免费网站可以做店招
  • 网站建设功能模块几报价深圳企业黄页
  • 湖州市南浔区建设局网站农产品电商营销策划方案
  • 如何登陆网站空间wordpress内容页不显示
  • 建一个网站的手机电脑版模板网站和定制网站的区别是什么
  • 企业响应网站中国建设银行贷款官网站
  • 做免费导航网站网站二级域名怎么设置
  • 织梦网站可以微信登录吗公司网站的搭建方案
  • 中国白客网vip钓鱼网站开发大众点评网
  • 呼市赛罕区信息网站做一顿饭工作网站排名优化师
  • 宁波网站建设系统介绍资料图片 wordpress
  • wordpress问答站模板西安三桥网站建设
  • 网站 设计 方案网站设计的趋势
  • 做网页收集素材常用的网站有哪些室内设计软件网页版
  • 5年网站seo优化公司购物小程序有哪些