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,当然消息是可以多个的

      

  • 相关阅读:
    C#读写txt文件的两种方法介绍
    C#委托的介绍(delegate、Action、Func、predicate)
    C#邮件发送
    ASP.NET 文件上传于下载
    关于Virtual Box虚拟机里的系统不能启动的解决方法
    unity的yield
    unity文件路径
    手机上的unity路径
    readonly
    unity延迟加载图片
  • 原文地址:https://www.cnblogs.com/chen-cai/p/9704132.html
Copyright © 2011-2022 走看看