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

上栗县建设局网站茂名营销网站开发

上栗县建设局网站,茂名营销网站开发,软件工程三要素,怎样登录建设互联网站1.前提 前面说到sendMessage携带的delay会被加上SystemClock.uptimeMillis() ,最终赋值给Message的when。 msg.when SystemClock.uptimeMillis() delayMillis; 那么when除了用来在链表里面作为排序依据以外,还在哪里用到了呢? 2.Looper…

1.前提

前面说到sendMessage携带的delay会被加上SystemClock.uptimeMillis() ,最终赋值给Message的when。

msg.when = SystemClock.uptimeMillis() + delayMillis;

那么when除了用来在链表里面作为排序依据以外,还在哪里用到了呢?

2.Looper.loop

首先看下Looper的loop里面,循环取queue的msg,如果msg为null,返回;否则执行msg

public final class Looper {public static void loop() {final Looper me = myLooper();final MessageQueue queue = me.mQueue;for (;;) {Message msg = queue.next(); // might block  获得下一个消息if (msg == null) {// No message indicates that the message queue is quitting.return;}msg.target.dispatchMessage(msg); //执行Messagemsg.recycleUnchecked(); //msg放入缓存}}
}

3.MessageQueue.next

看下queue.next()的实现,会通过when计算下一条消息需要等待的时长。

nextPollTimeoutMillis = (int) Math.min(msg.when - now, Integer.MAX_VALUE); 

public final class MessageQueue {Message next() {// Return here if the message loop has already quit and been disposed.// This can happen if the application tries to restart a looper after quit// which is not supported.final long ptr = mPtr;if (ptr == 0) {return null;}int pendingIdleHandlerCount = -1; // -1 only during first iterationint nextPollTimeoutMillis = 0; //下一条消息等待的时长for (;;) {if (nextPollTimeoutMillis != 0) {Binder.flushPendingCommands();}//等待nextPollTimeoutMillis,不往下执行nativePollOnce(ptr, nextPollTimeoutMillis);//时间到了synchronized (this) {// Try to retrieve the next message.  Return if found.final long now = SystemClock.uptimeMillis();Message prevMsg = null;Message msg = mMessages;if (msg != null) {if (now < msg.when) { //当前时间小于when// Next message is not ready.  Set a timeout to wake up when it is ready.nextPollTimeoutMillis = (int) Math.min(msg.when - now, Integer.MAX_VALUE); //等待时长} else {// Got a message.mBlocked = false;if (prevMsg != null) {prevMsg.next = msg.next;//将msg从链表中移除} else {mMessages = msg.next; //更新表头}msg.next = null;msg.markInUse();return msg;}} else {// No more messages.nextPollTimeoutMillis = -1;}                }// Run the idle handlers.// We only ever reach this code block during the first iteration.for (int i = 0; i < pendingIdleHandlerCount; i++) {final IdleHandler idler = mPendingIdleHandlers[i];mPendingIdleHandlers[i] = null; // release the reference to the handlerboolean keep = false;try {keep = idler.queueIdle();} catch (Throwable t) {Log.wtf(TAG, "IdleHandler threw exception", t);}if (!keep) {synchronized (this) {mIdleHandlers.remove(idler);}}}// Reset the idle handler count to 0 so we do not run them again.pendingIdleHandlerCount = 0;// While calling an idle handler, a new message could have been delivered// so go back and look again for a pending message without waiting.nextPollTimeoutMillis = 0;}}
}

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

相关文章:

  • 网站建设 青少年宫全国特种作业人员证查询系统
  • 怎么看网站pr值网站建设中页面下载
  • 网站优化套餐企业信用网查询系统
  • 做电影网站需要注意什么wordpress怎么修改域名
  • 织梦网站模板教程用织梦做网站有钱途吗
  • 怎样做网站甘肃省建设局网站首页
  • 湖南省建设银行网站6保定网站建设服务
  • 调整百度对网站的最大天级抓取频次值手机端WordPress无法连接
  • 简述网站的创建流程免费域名试用注册网站
  • 站点建设方案做外贸家纺资料网站
  • 甘肃省集约化网站建设试点wordpress邮件订阅
  • 交易网站制度建设wordpress可以自己做主题
  • 天津网站建设基本流程东阿企业做网站推广
  • 3合1网站建设scrm和crm如何配合
  • 美肤宝网站建设做网站专题模板
  • 建设网站买了域名还要什么资料合同管理软件
  • 网站中木马怎么办贵州整站优化seo平台
  • 合肥品牌网站建设网站规划建设与管理维护教程与实训
  • 管局审核网站名称陕西企业名录大全
  • 副食店年报在哪个网站做网站建设编辑工作总结
  • 网站开发前后端如何开心设计一个网站
  • ui设计与网站建设泰安网络公司协会
  • 企业手机网站建设报价泰安网站建设步骤
  • 电商网站建设分析绍兴做团购的网站
  • 建投五公司网站中铁中基建设集团网站
  • 湘潭网站建设定制磐石网络北京电力建设公司贴吧
  • 跨平台网站制作大学网站建设
  • 做视频的软件模板下载网站广州网站备案要求
  • 简要说明网站制作的基本步骤昭通学院教务管理系统
  • 太仓建设网站简单旅游网站开发