Android Handler原理理解

  最近得空研究了一下Handler,Handler在Android开发中是很常见的,它的使用大多使用在子线程中处理数据之后需要在UI上显示出来,大家也都知道Android UI绘制是在UI线程中进行(也就是常说的主线程中),Handler就是用来将非UI线程中处理的结果显示在UI线程上,这些是大家所熟知的。Handler作用就自然而然的是进行线程间通讯的,记得之前做Linux C开发的时候常常用到线程,线程常被比作是小型进程,但它与进程的有一个很明显的区别就是进程是独立的,而线程这共享数据域,所以在线程中全局变量是共享的,想了解线程以及进程的同志们可以看看linux下的进程以及线程使用。由此可以想到Android中的线程,android中的线程实质上也是使用C++在Linux系统中创建的,所以尽管它进行了上层的封装但是从原理上还是一样的。Android大多数App都是一个进程多线程的,所以在Android中使用的基本上都是线程,那么在这样一个多线程的环境下,我们怎样进行线程之间的交互就是非常重要的事情了,这个时候Handler的存在就显得尤为重要。

  在linux中我们可以使用信号量sem来进行通知和交互,但在android我们没有办法使用这个,我们在Android中使用现在的Handler,Handler我个人认为就是父线程中的一个全局对象,它其中实现的是在线程中创建一个Looper对象,而在Looper对象中创建一个MessageQueen消息队列,如果你在子线程中想将处理好的结果显示在UI线程中,就直接拿到主线程中的Handler对象句柄,将你要发送的消息放入主线程的消息队列中,然后进行loop循环发送就可以了,其实说到原理也就是这样,说到MessageQueue消息队列,如果sendMessage即时消息那没得说直接加在消息队列的头部,如果是延时消息还需要比与消息队列中正在排队的消息做排序,就是感觉还是要自己静下心来仔细阅读。

  以上是我自己对于Handler的理解,作为自己学习的笔记。如果有什么不对,请大家可以告诉我以便我能够温故而知新。至于代大家可以自己去看一下这里就不贴出来了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值