zoukankan      html  css  js  c++  java
  • Dispatcher、Handler/Looper

      通过操作系统的支持,每个thread对应一个消息队列,及该thread可以处理的消息,屏蔽的消息,通常为带优先级的消息队列,UI线程的消息队列中前端显示的消息优先级较高,操作系统接收到硬件或者软件消息后将消息加入到该队列中,每个消息对应一个消息处理函数,在windows phone中为DispatcherOpertion,默认为每个thread分配了消息队列处理对象Dispatcher,为方便Page和控件Image中默认加入了Dispatcher属性,通过Dispatcher.Invoke(消息处理函数)的方式加入消息队列;在Android中为Runnable,通过在该thread中声明一个handler,通过handler.Post(Runnable,delaytime)加入消息队列,通过每个消息队列对应一个唯一的消息队列处理调用函数;Dispatcher、Handler/Looper负责处理消息队列的消息入队、消息优先级排序、消息函数调用、消息出队等。

      windows phone应用程序的线程通常由UI线程、render线程、worker线程三种组成,一个App有唯一的render线程、通常有一个UI线程、多个网络处理等的后台处理worker线程,在多个线程之间的同步通讯时,需要用到Dispatch,以实现同步处理,例如网络下载完图片后向UI线程发送消息渲染Image。

      UI线程负责创建UI对象、建立UI对象树、布局、处理用户触控交互时间、开启其它线程等,在UI线程中最好不要有大量消耗时间的操作,保障对用户交互操作的顺畅;render线程处理具体UI的渲染,此时UI的size、layout都应该已经确定,transform、animation的处理可以使用GPU的硬件处理使得渲染等UI操作较为高效。

      Android应用程序的线程由UI主线程、worker线程组成,无默认的render线程,所有UI的布局、渲染等操作都在UI主线程中进行。

  • 相关阅读:
    「搬运」影魔
    「不会」斯特林数
    「不会」二项式反演
    「不会」插头dp
    「不会」主定理
    「不会」网络流
    接口和抽象类的区别
    TestNG常用注解
    九九乘法表-Java
    冒泡排序和选择排序--Java
  • 原文地址:https://www.cnblogs.com/toven/p/2236350.html
Copyright © 2011-2022 走看看