基础篇——Handler异步回调机制

news/2024/9/1 2:51:23

写代码的四点:

     1.明确需求。要做什么?

     2.分析思路。要怎么做?(1,2,3……)

     3.确定步骤。每一个思路要用到哪些语句、方法和对象。

     4.代码实现。用具体的语言代码将思路实现出来。

学习新技术的四点:

     1.该技术是什么?

     2.该技术有什么特点?(使用需注意的方面)

     3.该技术怎么使用?(写Demo)

     4.该技术什么时候用?(在Project中的使用场景 )

----------------------早计划,早准备,早完成。-------------------------

为什么要有Handler?

        1.主线程不能做耗时操作(例如访问网络,数据库操作),要放在子线程;

        2.子线程又不能修改主线程的UI;

        所以就需要用到Handler,在子线程处理完成后,通知主线程更新UI。Handler是线程间通信的工具,就是用来解决线程和线程之间的通信的。

        注:主线程也不能修改子线程创建的UI。

Handler的原理:

  Android中提供了一种异步回调机制Handler,可以在完成一个很长时间的任务后做出相应的通知。

 图解:使用Handler.sendEmptyMessage(0)发送一个Message之后,会把Message放到MessageQueue队列中,该队列属于某个Looper对象。每个Looper对象通过ThreadLocal.set(new Looper)跟一个Thread绑定在一起,该Looper对象所属的线程在Looper.loop中循环执行获取MessageQueue队列中的Message对象的操作,并将Message对象交给Handler处理,调用Handler的dispatchMessage方法。

注:1.sendEmptyMessage到handlerMessage的过程,途中经过Looper.MessageQueue队列,转由Looper所属的线程去处理,这是一个异步的过程。(Looper所属的线程可以是sendEmptyMessage所在的线程)

       2.Looper.prepare()和Looper.loop()之间的代码是运行在主线程的。

---------------------------------------------------------------------------------------------------------------------------

早计划,早准备,早完成。 欢迎关注!交流!Star!

GitHub:https://github.com/wangyang0313

微信公众号:一个灵活的胖子MrWang

简书:https://www.jianshu.com/u/e5e733d79b96  


http://www.niftyadmin.cn/n/2108695.html

相关文章

AMP:Google 新技术能让网页瞬间加载完毕

作为一家活在 Web 世界的公司,Google 对提升网页性能一直是不遗余力。今天,为了让用户能够更快地浏览网页,Google 联合 8 家科技公司以及近 30 家新闻机构一起发布了一个名为移动页面加速(Accelerated Mobile Pages)的…

HTML5中类jQuery选择器querySelector的高级使用 document.querySelectorAll.bind(document);

基本用法 querySelector 该方法返回满足条件的单个元素。按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素。 ----> querySelector得到一个DOM var element document.querySelector(#container);//返回id为conta…

不能正常关机的处理办法

问:Win98不能正常关机是什么原因,如何处理?安装WinXP后不能正常关机,按下电源开关也不能关机而又重新启动系统,是什么原因?答:首先谈谈Windows系统自动关机的条件。在Win98及更高版本的系统中都…

AndroidStudio的debug功能详解

转载仅供本人存档及后续研究使用,请尊重原创。 转载自:https://blog.csdn.net/u013952370/article/details/52131007 运行debug模式 1. 进入debug - 点击图中红色圆圈圈起的左边绿色按钮,运行app的debug模式,快捷键ShiftF9 - 点…

putty使用方法,中文教程 链接地址

http://www.lupaworld.com/53411/viewspace_42657.html转载于:https://blog.51cto.com/axlrose/1293059

基础篇——泛型(Generics)

写代码的四点: 1.明确需求。要做什么? 2.分析思路。要怎么做?(1,2,3……) 3.确定步骤。每一个思路要用到哪些语句、方法和对象。 4.代码实现。用具体的语言代码将思路实现出来。 学习新技术的四点: 1.该技…

SOA的真相是什么?[转]

作 者:IT经理世界 周源 CIO心中的SOA和厂商宣传的SOA,好像并不是一码事儿。 为什么SOA(ServiceOrientedArchitecture,面向服务架构)正在大行其道?答案也许简单到极点。今年9月,BEA公司CEO庄思浩在旧金山举行的BEAWorl…

机器人产业变革:后来者的机会之窗|财经封面报道

◆ ◆ ◆ 前言 人工智能和新一代信息技术正在重塑机器人产业,机器人应用不仅会在工业领域高速扩张,还将向生活服务领域蔓延,产业变革之际,正是后来者的机会之窗。 ◆ ◆ ◆ 机器人:后来者的机会之窗 机器人既是高端制造…