• [ 转载 ]


     https://www.jianshu.com/p/56157adb0a3d

    为什么要有Handler呢?

    主线程不能做耗时操作,不然会出现ANR的现象,子线程不能更新Ul界面

    Android为什么要设置Handler来更新UI?

    假如在同一个Activity界面中,有多个线程去更新UI,并且都没有加锁机制,立马会出现界面混乱的现象,如果会UI的更新操作加了锁进行处理,这样就会产生性能下降的问题,对于这样的问题,Android提供了一套更新UI的机制,也就是Handler机制,我们只用遵循这样的规定即可

    简单的概述一下:

    Handler发送一个message,进入messgeQueue,根据先进先出,取出message,然后处理message,这里,发送的是Handler,处理的也是Handler,只需要用回调函数就能实现

    如何实现不停的从消息队列里取出消息呢,这时就用上了Lopper,Lopper里面有一个死循环(类似摩天轮),不断的从消息队列中抽取消息,每个Thread都有一个Lopper,也只能有一个Lopper,默认情况下Lopper是不启动的,因为Activity默认已经帮你启动了,用于UI刷新的相关工作,

    如果我们要在自己写的Thead中,启动lopper,参照下面的代码,执行prepared和lopper

    public class LooperThread extends Thread{

    public void run(){

    //初始化lopper

    Lopper.prepare

    //其他的一些处理

    //开始循环处理消息队列

    Lopper.loop();

    }

    }

    一个Thread对应一个Lopper

    一个Lopper可以有多个Handler

    一个Lopper对应一个messageQueue



    作者:糖豆萌萌哒
    链接:https://www.jianshu.com/p/56157adb0a3d
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    linux centos7 防止暴力破解
    win10 配置git 环境变量
    Tengine的说明
    php composer 报错 requires php ^7.1.8 || ^8.0 -> your php version
    uni-app v-for循环遍历 动态切换class、动态切换style
    Tomcat安装与配置
    我的云服务之WWW
    RHEL7 单独安装图形 X11
    python3-sql解析库——sqlparse
    Python3实战——爬虫入门
  • 原文地址:https://www.cnblogs.com/ILoke-Yang/p/10659202.html
Copyright © 2020-2023  润新知