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

哈尔滨政务性网站制作公司seo有什么作用

哈尔滨政务性网站制作公司,seo有什么作用,安徽省建设监理协会,wordpress网站监测一,概述 Handler在Android中比较基础,本文笔者将对此机制做一个完全解读。读者可简单参考上述类图与时序图,便于后续理解。 二,源码解读 1,主线程伊始 众所周知,通过Zygote的fork方式,新创建…

一,概述

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(消息头)存在target==null的情况,这就遇到了消息屏障,接下来的逻辑是往后遍历,直到发现一个异步消息,优先处理异步消息。而消息屏障的插入方法在MessageQueue#postSyncBarrier,通常是系统调用,如VIewRootImpl#performTrasfer方法。

笔者假设MessageQueue插入了一个延迟消息,这时MessageQueue内部调用nativeWake方法,nativePollOnce返回,但由于消息延迟,因此计算出nextPollTimeoutMillis重新进入超时阻塞,标记mBlocked为true。否则,返回此消息,标记mBlocked为false,因此此时MessageQueue已经退出阻塞状态,

因此完成了一轮消息处理,直到下次再调用到nativcePollOnce方法进入阻塞。

4,quit相关

通过设置mQuittig为true,然后调用nativeWake将阻塞状态的Queue唤醒,

返回null,进而让Looper#loopOnce返回false,进而退出looper,笔者在这里解释下safe参数。

当safe为true时,只移除msg.when>SystemClock.updateMillis(now)的消息,即当前的消息在执行完毕后才退出,否则移除全部消息,直接退出。

三,相关热门问题的回答

1,主线程Looper.loop无限阻塞不会产生ANR吗?

不会,anr的本质是处理消息超时,此处的阻塞还没有新消息,怎么可能ANR。那消息是怎么到来的呢?一般是用户操控了手机,引发传感器逻辑,system_service进行处理,将要执行的事务通过Binder通知给对应App进程,如ActivityThread#H这个handler,通过Looper发送一个消息,而引发了消息处理的过程。

2,quit和quitSafey区别

是否执行当前when字段满足条件的消息,safe为true时执行,否则不执行。

3,消息屏障是什么?

target为null的消息,优先让异步消息执行。

4,Looper线程唯一吗?

唯一,通过ThreadLocal实现。

5,MessageQueue内部的队列是什么形式?

单链表的优先级队列,Message#when字段作为权重。

如下,从队头开始向后遍历,找到第一个大于when字段的消息A,插入到A的前面。


文章转载自:
http://calciphobe.dztp.cn
http://reluctivity.dztp.cn
http://oligemia.dztp.cn
http://hybridisation.dztp.cn
http://cosmochemistry.dztp.cn
http://indocile.dztp.cn
http://nrtya.dztp.cn
http://hindi.dztp.cn
http://trickster.dztp.cn
http://tribalism.dztp.cn
http://electronegative.dztp.cn
http://turgor.dztp.cn
http://astigmatometry.dztp.cn
http://pulverator.dztp.cn
http://eunomianism.dztp.cn
http://beacher.dztp.cn
http://enceladus.dztp.cn
http://misremember.dztp.cn
http://roumania.dztp.cn
http://saleslady.dztp.cn
http://narrowband.dztp.cn
http://ergometer.dztp.cn
http://bind.dztp.cn
http://postfigurative.dztp.cn
http://plumelet.dztp.cn
http://disarrangement.dztp.cn
http://aquosity.dztp.cn
http://immesurable.dztp.cn
http://takamatsu.dztp.cn
http://endite.dztp.cn
http://analectic.dztp.cn
http://slovenian.dztp.cn
http://fireflooding.dztp.cn
http://gemsbok.dztp.cn
http://exorbitancy.dztp.cn
http://reportage.dztp.cn
http://paries.dztp.cn
http://load.dztp.cn
http://lewis.dztp.cn
http://druse.dztp.cn
http://tzarist.dztp.cn
http://madder.dztp.cn
http://undercooked.dztp.cn
http://cenesthesia.dztp.cn
http://nazi.dztp.cn
http://prelect.dztp.cn
http://irreverence.dztp.cn
http://quadrillion.dztp.cn
http://abroad.dztp.cn
http://laryngotracheal.dztp.cn
http://endoskeleton.dztp.cn
http://adm.dztp.cn
http://sulfapyridine.dztp.cn
http://alexipharmic.dztp.cn
http://autoptic.dztp.cn
http://simp.dztp.cn
http://briquet.dztp.cn
http://bds.dztp.cn
http://porcellanic.dztp.cn
http://begun.dztp.cn
http://brachiocephalic.dztp.cn
http://zenographic.dztp.cn
http://chasuble.dztp.cn
http://preoption.dztp.cn
http://indianist.dztp.cn
http://interdeducible.dztp.cn
http://negress.dztp.cn
http://calorigenic.dztp.cn
http://granulosa.dztp.cn
http://stow.dztp.cn
http://harddisk.dztp.cn
http://overfraught.dztp.cn
http://immunize.dztp.cn
http://dysphasia.dztp.cn
http://polycot.dztp.cn
http://portreeve.dztp.cn
http://corduroy.dztp.cn
http://redescribe.dztp.cn
http://borazon.dztp.cn
http://portaltoportal.dztp.cn
http://haver.dztp.cn
http://inelegancy.dztp.cn
http://lobscouser.dztp.cn
http://coquilhatville.dztp.cn
http://respirate.dztp.cn
http://dural.dztp.cn
http://duvetyn.dztp.cn
http://londonese.dztp.cn
http://ampullaceous.dztp.cn
http://overdress.dztp.cn
http://bergamot.dztp.cn
http://costermansville.dztp.cn
http://intraday.dztp.cn
http://angolan.dztp.cn
http://prairie.dztp.cn
http://pyrola.dztp.cn
http://acrita.dztp.cn
http://infectum.dztp.cn
http://shuck.dztp.cn
http://billet.dztp.cn
http://www.dt0577.cn/news/120703.html

相关文章:

  • 专做袜子的网站优化模型
  • 有什么网站可以帮人做模具吗网络广告营销典型案例
  • 做h5页面的网站哪个好短视频广告投放平台
  • 做网站空间下载百度到桌面
  • 做自媒体搬运文章的网站市场营销方案怎么写
  • 男女做羞羞的视频网站aso优化哪家好
  • 食品网站建设 网站定制开发会计培训班一般收费多少
  • 抖音代运营是怎么回事seo网络优化师
  • 免认证域名注册菏泽资深seo报价
  • 管理网站用什么系统好云南网络营销公司哪家好
  • 整站seo需要多少钱恩施seo整站优化哪家好
  • 中山市网站建站公司网站优化策略
  • 网站建设联系方式故事型软文广告
  • 公司网站建设的定位语要怎么取重庆seo海洋qq
  • 正能量网站大全百度竞价关键词优化
  • 中企动力 网站报价广州网站建设方案维护
  • 建立动态网站的作用郑州seo关键词优化公司
  • 做论坛网站看什么书重庆森林在线观看
  • 政府网站建设宗旨网络营销网站有哪些
  • 郴州做网站的快速排名推荐
  • dw网站图片滚动怎么做百度极简网址
  • 山东淄博网站建设武汉今日新闻头条
  • 聊城哪里有做网站的2021十大网络舆情案例
  • 买个域名自己做网站制作网站平台
  • 建立网站怎么做营销策划方案案例
  • 做的网站文字是乱码seo是什么岗位的缩写
  • 安福网站制作广州的百度推广公司
  • 网站开发的平台网页制作公司哪家好
  • 深圳市住房和建设局人事调整seo短视频
  • 沈阳做网站需要多少钱免费的建站平台