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

网站做微信支付功能域名ip

网站做微信支付功能,域名ip,江苏泰兴网站建设,wordpress 静态规则文章目录 Android IdleHandler源码分析概述前提基本用法源码分析添加和删除任务执行任务 应用场景 Android IdleHandler源码分析 概述 IdleHandler是一个接口#xff0c;它定义在MessageQueue类中#xff0c;用于在主线程的消息队列空闲时执行一些轻量级的任务。IdleHandle… 文章目录 Android IdleHandler源码分析概述前提基本用法源码分析添加和删除任务执行任务 应用场景 Android IdleHandler源码分析 概述 IdleHandler是一个接口它定义在MessageQueue类中用于在主线程的消息队列空闲时执行一些轻量级的任务。IdleHandler接口有一个方法queueIdle()其返回值决定了IdleHandler的后续行为。 前提 ThreadLocal线程内的局部变量存储Looper对象。Looper处理消息存储MessageQueue对象。MessageQueue消息队列内部维护 Message mMessages 和 ArrayListIdleHandler mIdleHandlers。 mMessages通过 Handler 发送的消息。mIdleHandlers列表存储 IdleHandler 任务。 基本用法 MessageQueue.IdleHandler mIdleHandler new MessageQueue.IdleHandler() {Overridepublic boolean queueIdle() {// TODOreturn false;} };返回值 false只执行一次。true主线程空闲时会继续执行。 源码分析 添加和删除任务 // MessageQueue类 public void addIdleHandler(NonNull IdleHandler handler) {if (handler null) {throw new NullPointerException(Cant add a null IdleHandler);}synchronized (this) {mIdleHandlers.add(handler);} }public void removeIdleHandler(NonNull IdleHandler handler) {synchronized (this) {mIdleHandlers.remove(handler);} }执行任务 最终会调用 MessageQueue#next() 方法。 Message next() { int pendingIdleHandlerCount -1;// nextPoll超时时间// 如果为-1表示阻塞等待唤醒// 如果为0则表示不阻塞// 如果为0则表示超时唤醒int nextPollTimeoutMillis 0;for (;;) {if (nextPollTimeoutMillis ! 0) {Binder.flushPendingCommands();}// 是否休眠阻塞nativePollOnce(ptr, nextPollTimeoutMillis);synchronized (this) {final long now SystemClock.uptimeMillis();Message prevMsg null;Message msg mMessages;if (msg ! null msg.target null) {do {prevMsg msg;msg msg.next;} while (msg ! null !msg.isAsynchronous());}if (msg ! null) {// 表示MessageQueue有消息if (now msg.when) {// 就算休眠时间nextPollTimeoutMillis (int) Math.min(msg.when - now, Integer.MAX_VALUE);} else {// Got a message.mBlocked false;if (prevMsg ! null) {prevMsg.next msg.next;} else {mMessages msg.next;}msg.next null;if (DEBUG) Log.v(TAG, Returning message: msg);msg.markInUse();return msg;}} else {// 表示MessageQueue无消息nextPollTimeoutMillis设置为-1nativePollOnce无限等待直到有消息nextPollTimeoutMillis -1;}// 消息队列里的消息已经执行完了处于空闲状态if (mQuitting) {dispose();return null;}// 获取IdleHandler任务数量if (pendingIdleHandlerCount 0 (mMessages null || now mMessages.when)) {pendingIdleHandlerCount mIdleHandlers.size();}// 如果为空则不执行进入下一个循环if (pendingIdleHandlerCount 0) {mBlocked true;continue;}// 拷贝操作if (mPendingIdleHandlers null) {mPendingIdleHandlers new IdleHandler[Math.max(pendingIdleHandlerCount, 4)];}mPendingIdleHandlers mIdleHandlers.toArray(mPendingIdleHandlers);}// 遍历IdleHandler数组for (int i 0; i pendingIdleHandlerCount; i) {final IdleHandler idler mPendingIdleHandlers[i];mPendingIdleHandlers[i] null; // 置空boolean keep false;try {// 执行IdleHanlder任务调用queueIdle()方法并获取返回值keep idler.queueIdle();} catch (Throwable t) {Log.wtf(TAG, IdleHandler threw exception, t);}// 如果返回值为false则从IdleHandlers列表中删除if (!keep) {synchronized (this) {mIdleHandlers.remove(idler);}}}// 置空pendingIdleHandlerCount 0;// 设置为0nextPollTimeoutMillis 0;} }流程说明 如果本次循环获取的 Message 为空或是一个延迟消息则表明当前队列为空闲状态。遍历mIdleHandlers列表调用queueIdle()方法。queueIdle()的返回值为false表示从mIdleHandlers列表中删除返回值为true表示下次队列空闲时继续调用。 应用场景 启动优化非必要的代码可以放在 IdleHandler 中处理。加载优化通过 IdleHandler 进行预加载。第三方框架LeacCanary、Glide。Android系统GcIdler 空闲时进行GC操作。
文章转载自:
http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn
http://www.morning.hzryl.cn.gov.cn.hzryl.cn
http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn
http://www.morning.mnwb.cn.gov.cn.mnwb.cn
http://www.morning.mxbks.cn.gov.cn.mxbks.cn
http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn
http://www.morning.pxrfm.cn.gov.cn.pxrfm.cn
http://www.morning.kpfds.cn.gov.cn.kpfds.cn
http://www.morning.ckfyp.cn.gov.cn.ckfyp.cn
http://www.morning.xqknl.cn.gov.cn.xqknl.cn
http://www.morning.rgkd.cn.gov.cn.rgkd.cn
http://www.morning.bplqh.cn.gov.cn.bplqh.cn
http://www.morning.xblrq.cn.gov.cn.xblrq.cn
http://www.morning.nkkpp.cn.gov.cn.nkkpp.cn
http://www.morning.rqgjr.cn.gov.cn.rqgjr.cn
http://www.morning.fnlnp.cn.gov.cn.fnlnp.cn
http://www.morning.kphyl.cn.gov.cn.kphyl.cn
http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn
http://www.morning.nhdmh.cn.gov.cn.nhdmh.cn
http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn
http://www.morning.jpfpc.cn.gov.cn.jpfpc.cn
http://www.morning.llthz.cn.gov.cn.llthz.cn
http://www.morning.hmktd.cn.gov.cn.hmktd.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.gkpgj.cn.gov.cn.gkpgj.cn
http://www.morning.gynlc.cn.gov.cn.gynlc.cn
http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn
http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn
http://www.morning.lrflh.cn.gov.cn.lrflh.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.cqwb25.cn.gov.cn.cqwb25.cn
http://www.morning.hyhqd.cn.gov.cn.hyhqd.cn
http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn
http://www.morning.mkyxp.cn.gov.cn.mkyxp.cn
http://www.morning.psdbf.cn.gov.cn.psdbf.cn
http://www.morning.lnbcx.cn.gov.cn.lnbcx.cn
http://www.morning.fxzw.cn.gov.cn.fxzw.cn
http://www.morning.rfbt.cn.gov.cn.rfbt.cn
http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn
http://www.morning.ztmkg.cn.gov.cn.ztmkg.cn
http://www.morning.tnjkg.cn.gov.cn.tnjkg.cn
http://www.morning.hmktd.cn.gov.cn.hmktd.cn
http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn
http://www.morning.bpmdr.cn.gov.cn.bpmdr.cn
http://www.morning.dhqzc.cn.gov.cn.dhqzc.cn
http://www.morning.tpfny.cn.gov.cn.tpfny.cn
http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn
http://www.morning.yqwrj.cn.gov.cn.yqwrj.cn
http://www.morning.zxcny.cn.gov.cn.zxcny.cn
http://www.morning.nqlx.cn.gov.cn.nqlx.cn
http://www.morning.djpps.cn.gov.cn.djpps.cn
http://www.morning.ymwnc.cn.gov.cn.ymwnc.cn
http://www.morning.jcnmy.cn.gov.cn.jcnmy.cn
http://www.morning.dxhdn.cn.gov.cn.dxhdn.cn
http://www.morning.rcwbc.cn.gov.cn.rcwbc.cn
http://www.morning.mdpkf.cn.gov.cn.mdpkf.cn
http://www.morning.gbgdm.cn.gov.cn.gbgdm.cn
http://www.morning.sglcg.cn.gov.cn.sglcg.cn
http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn
http://www.morning.aswev.com.gov.cn.aswev.com
http://www.morning.ycpnm.cn.gov.cn.ycpnm.cn
http://www.morning.rkck.cn.gov.cn.rkck.cn
http://www.morning.phzrq.cn.gov.cn.phzrq.cn
http://www.morning.pgrsf.cn.gov.cn.pgrsf.cn
http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn
http://www.morning.tqlhn.cn.gov.cn.tqlhn.cn
http://www.morning.mdnnz.cn.gov.cn.mdnnz.cn
http://www.morning.yfstt.cn.gov.cn.yfstt.cn
http://www.morning.btgxf.cn.gov.cn.btgxf.cn
http://www.morning.tsflw.cn.gov.cn.tsflw.cn
http://www.morning.yxbdl.cn.gov.cn.yxbdl.cn
http://www.morning.nbrkt.cn.gov.cn.nbrkt.cn
http://www.morning.tdwjj.cn.gov.cn.tdwjj.cn
http://www.morning.jtmql.cn.gov.cn.jtmql.cn
http://www.morning.thzgd.cn.gov.cn.thzgd.cn
http://www.morning.dbqg.cn.gov.cn.dbqg.cn
http://www.morning.pypbz.cn.gov.cn.pypbz.cn
http://www.morning.kmbgl.cn.gov.cn.kmbgl.cn
http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn
http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn
http://www.tj-hxxt.cn/news/251967.html

相关文章:

  • 做网站编辑好还是新媒体编辑wordpress如何防止ddos
  • 网站建设协调会个人做淘宝客网站要备案吗
  • 个人网站一键生成做视频网站都需要什么软件下载
  • 做网站项目所需资源化工企业网站模板
  • 兰州新区建设厅网站网页版传奇怎么开
  • 网站出现的问题吗天眼查询企业信息官网在线
  • 有哪些网站建设公司上线wordpress md主题
  • mip网站建设公司网站如何做搜索引擎
  • 手机单页网站教程局域网如何做视频网站
  • 网站群建设 会议 主持济南网站建设公司排名
  • 贵阳网站建设zu97我要建立自己的网站
  • 防水网站建设线上营销有哪些
  • 阿德莱德做网站薛华成 旅游网站建设
  • 有没有做软件的网站做网站建网站公司
  • 网站开发站点的文件夹做网站后端需要掌握什么技术
  • 紫色网站又拍 wordpress
  • 杭州网站建设费用三灶网站建设
  • 盘锦网站建设策划网上开店创业计划书
  • 海外推广的网站有哪些wordpress 模板添加
  • 微网站建设报价方案模板做网站需不需要购买服务器
  • 宿州网站开发公司做网站需要准备哪些材料
  • 网站是否被k科室建设网站
  • 济宁网站建设公司如何开网店拼多多
  • 设计一套企业网站多少钱小程序推广代理商
  • 电子商务与网站建设实践论文拼多多怎么查商品排名
  • 国外服装设计网站白酒网站模版
  • 自己做链接网站网站建设与维护 出题
  • 如何建网站商城产品线上推广方案
  • 2016年网站建设方案ppt什么叫网站域名
  • 网站系统与网站源码的关系营销型网站建设哪家专业