当前位置: 首页 > news >正文 网站做微信支付功能域名ip news 2025/10/26 20:44:49 网站做微信支付功能,域名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什么叫网站域名 网站系统与网站源码的关系营销型网站建设哪家专业