zoukankan      html  css  js  c++  java
  • handler

    在Android中,有两种性质的线程:

      主线程  也叫UI线程,主要作用是处理界面相关的业务

      子线程  Android中的耗时操作(访问网络,I/O操作)不能在主线程进行,因为那样很可能导致界面的卡顿,甚至应用程序崩溃

    其中主线程不做耗时操作,子线程不更新UI,从Android3.0开始,系统要求访问网络必须在子线程中进行,否则访问网络失败并抛出android.os.NetworkOnMainThreadException异常,这是为了避免出现ANR(Application Not Responding)现象。

    (1)handler是什么?

      handler是Android给我们提供用来更新UI的一套机制

      也是一套消息处理的机制,我们可以发送消息,也可以通过它处理消息

    (2)为什么要用handler?可以不用handler吗?

      不行的

      Android在设计的时候,就封装了一套消息创建、传递、处理机制,如果不遵循这样的机制,就没有办法更新UI信息,就会抛出异常

    (3)handler的工作原理?

      Handler:负责发送Message到消息队列并且处理Looper分派过来的Message

      Message:负责通信时相关信息的存放和传递

      MessageQueue:负责存储Handler发送过来的Message

      Looper:负责读取MessageQueue中的消息,并将读到的消息交给Handler去处理

            队列中无消息---->Looper将会阻塞

            队列中有消息---->Looper将被唤醒

    Thread中包含着Looper,并且只有一个,Looper中包含着MessageQueue,也只有一个,MessageQueue中包含着Message,当然消息是可以多个的

      

  • 相关阅读:
    webstorm创建和搭建vue项目
    win10企业版激活方法
    Jquery使用规范(一)
    Json序列化循环引用的问题
    后台调用存储过程
    将金额人民币转化为大写 C#
    谷歌分辨率扩展程序的添加
    MVC 删除文件
    MVC C# 调用存储过程
    XML 转换 lits<>
  • 原文地址:https://www.cnblogs.com/chen-cai/p/9704132.html
Copyright © 2011-2022 走看看