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

版权声明:旨在技术交流与成长,欢迎大家来交流学习。 https://blog.csdn.net/qq941263013/article/details/82113297

写代码的四点:

     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方法。

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

猜你喜欢

转载自blog.csdn.net/qq941263013/article/details/82113297