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

网页跳转到其它网站芜湖市建设银行支行网站

网页跳转到其它网站,芜湖市建设银行支行网站,毕设做网站的过程,wordpress自适应主题制作一#xff0c;概述 Handler在Android中比较基础#xff0c;本文笔者将对此机制做一个完全解读。读者可简单参考上述类图与时序图#xff0c;便于后续理解。 二#xff0c;源码解读 1#xff0c;主线程伊始 众所周知#xff0c;通过Zygote的fork方式#xff0c;新创建…一概述 Handler在Android中比较基础本文笔者将对此机制做一个完全解读。读者可简单参考上述类图与时序图便于后续理解。 二源码解读 1主线程伊始 众所周知通过Zygote的fork方式新创建的子进程通过反射获取到ActivityThread的main静态方法作为caller在Zygote中使用 我们跟进到ActivityThread#main 调用prepareMainLooper创建主线程looper 很简单通过ThreadLocal保证了线程唯一 笔者在此啰嗦下ThreadLocal原理Thread内部默认存在一个ThreadLocalMap线程唯一。set处通过将ThreadLocal对象作为key设置进Thread#threadLocalMap下次get时从threadLocalMap将ThreadLocal对象作为key传入便能获取到set的值。 我们继续分析Looper构造方法 很简单创建了一个消息队列因此MessageQueue也是线程唯一。参数quitAllowed为false主线程不允许退出。接下来的核心是loop方法我们跟进。 此处存在无限循环当loopOnce返回false时才退出此循环。后面读者会知道通过主动调用quite方法此处将返回false。 2消息的处理 MessageQueue#next是一个阻塞方法当mQueue返回null时退出否则会调用到如下逻辑 target是handler跟进 msg.callback是通过handler.post方法设置的因此handleCallback简单run如果设置了mCallback显然mCallback优先级高于handleMessage方法。 3消息的到来 回到前述过程MessageQueue#next方法这非常重要我们看下实现。 记住nextPollTimeoutMillis参数这个是在下文计算nextPollTimeoutMillis值队头的when字段与当前时间now作差值。其实整个Looper的底层阻塞实现类似object.wait或condition.await方法是通过epoll的epoll#await方法实现epoll#await接收一个参数当为0时无限等待否则是一个超时阻塞方法直到存在事件会唤醒感兴趣的读者可以去主动了解下linux下的epoll多路复用机制。不过此处读者简单理解为Object.wait/notify即可。 如果已经唤醒检查到mMessage消息头存在targetnull的情况这就遇到了消息屏障接下来的逻辑是往后遍历直到发现一个异步消息优先处理异步消息。而消息屏障的插入方法在MessageQueue#postSyncBarrier通常是系统调用如VIewRootImpl#performTrasfer方法。 笔者假设MessageQueue插入了一个延迟消息这时MessageQueue内部调用nativeWake方法nativePollOnce返回但由于消息延迟因此计算出nextPollTimeoutMillis重新进入超时阻塞标记mBlocked为true。否则返回此消息标记mBlocked为false因此此时MessageQueue已经退出阻塞状态 因此完成了一轮消息处理直到下次再调用到nativcePollOnce方法进入阻塞。 4quit相关 通过设置mQuittig为true然后调用nativeWake将阻塞状态的Queue唤醒 返回null进而让Looper#loopOnce返回false进而退出looper笔者在这里解释下safe参数。 当safe为true时只移除msg.whenSystemClock.updateMillisnow的消息即当前的消息在执行完毕后才退出否则移除全部消息直接退出。 三相关热门问题的回答 1主线程Looper.loop无限阻塞不会产生ANR吗 不会anr的本质是处理消息超时此处的阻塞还没有新消息怎么可能ANR。那消息是怎么到来的呢一般是用户操控了手机引发传感器逻辑system_service进行处理将要执行的事务通过Binder通知给对应App进程如ActivityThread#H这个handler通过Looper发送一个消息而引发了消息处理的过程。 2quit和quitSafey区别 是否执行当前when字段满足条件的消息safe为true时执行否则不执行。 3消息屏障是什么 target为null的消息优先让异步消息执行。 4Looper线程唯一吗 唯一通过ThreadLocal实现。 5MessageQueue内部的队列是什么形式 单链表的优先级队列Message#when字段作为权重。 如下从队头开始向后遍历找到第一个大于when字段的消息A插入到A的前面。
http://www.hkea.cn/news/14458053/

相关文章:

  • 电脑软件和网站怎么做专门做外贸网站
  • 网站主题模板下载安装上海浦东建筑建设网站
  • 网站开发人员没有按照设计开发为什么要建设营销型网站
  • 外链发布平台做网站优化就是发文章吗
  • 我想做京东网站淘宝怎么做企业培训心得体会
  • 社交网站建设需求分析app页面设计软件
  • o2o网站建设案例具有价值的网站建设平台
  • 管理网站建设哪家公司好个人网站备案技巧
  • 建网站免费软件青羊区建设厅网站
  • 网站策划书的内容网站建设购物商城
  • 网站建设咨询电话长沙网站推广公司哪家好
  • 凡科做网站在百度能看见吗绵阳模板网站
  • 钱宝做任务的网站怎么下动易网站建设
  • 网站发展趋势西安网页制作模板
  • 襄阳市建设局网站html网页设计代码简单例子
  • 如何设置wordpress的语言上海网站快速排名优化
  • 深圳网站建设开发哪家好焦作会计做继续教育在哪个网站
  • 网站建设的毕业设计报告彩票黑网站是怎么做的
  • 新手怎么做网站优化微信小程序商城源码
  • 中国建设银行网站怎么解绑设备wordpress 评论倒叙
  • 网站策划方案论文网上怎么推广产品
  • 戚墅堰建设网站电子贺卡制作
  • 扫二维码直接进入网站怎么做服务营销理论
  • 阳泉营销型网站建设wordpress栏目置顶
  • wordpress免费自定义模板装修教程百度seo关键词点击软件
  • 佛山网站优化步骤ui设计技术培训学校
  • 长沙手机网站建设哪些内容泉州网络seo
  • 帮别人做违法网站会判刑吗小吃加盟网站大全
  • 网站空间免费试用简体中文wordpress5.2下载
  • 苏州网站开发公司兴田德润简介世界工厂网免费平台