Handler机制详解

标签: Handler 内存泄漏解决 Handler机制 Handler详解
146人阅读 评论(0) 收藏 举报
分类:

Handler

  • Handler:

    • 概述: Handler负责取出、发送并且处理Message,每个Handler实例都与
      创建它的线程以及该线程的MessageQueue相关联。默认的Handler是同步的,也可以扩
      展android.os.Handler构造异步Handler,即异步发送消息。
    • 作用:

      • 作用一:发送消息或Runnable 在未来某个时间点发送消息或Runnable
        • post: 排序Runnable,以便在接收时由MessageQueue调用。
        • sendMessage: 排序包含Bundle数据的message,以便被handlerMessage
          方法调用。
      • 作用二:线程切换 将action(活动)enqueue(排队),并在其它线程执行。
    • 创建Handler:

      • 方法一:实现Callback: 通过实现Callback创建的Handler,其内部默认使用当前
        线程的Looper(测试过)。
      • 其他方法: 请参阅Handler的构造器。
    • 数量: 一个线程中可以实例化多个Handler,但是只能实例化一个与之相关的Looper。
      测试过,在主线程中,通过扩展Handler以及实现Callback方法创建的Handler,它们
      在内存中分配的地址不同,但是通过这两个Handler获取的Looper在内存中的地址是
      相同的。

  • Looper:

    • 概述: 为线程运行消息循环的类,线程默认没有和Looper关联,要创建一个Looper
      ,先在线程运行loop的地方调动looper.prepare(),然后调用looper.loop()处理
      消息,在调用looper.prepare()(即创建Looper)的时候会创建一个MessageQueue,
      Looper负责循环,MessageQueue负责取出消息,所有在Looper中Message被不停的取
      出来。
    • 消息调度: 在Looper.loop()方法中会执行dispatchMessage(msg),进行
      消息的调度。
  • MessageQueue:

    • 概述: Message并不会直接添加到MessageQueue中,而是通过与Looper关联的
      Handler。
  • Handler机制总结:

    • Handler工作机制:
      Handler创建并发送Message到MessageQueue中,MessageQueue在一个消息循环Looper中,Looper不断轮询MessageQueue,如果有Message,则取出交给Handler处理,如果没有,则等待。
  • 优缺点: (摘自网络)

    • 优点: (感觉像废话,没觉得)
      • 结构清晰,功能定义明确
      • 对于多个后台任务时,简单,清晰
    • 缺点: (同样觉得是在扯淡)
      • 在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
  • Demo下载地址:

https://download.csdn.net/download/chenyuan_jhon/10349121

查看评论

Android源码分析--Handler和Looper机制详解

在Android系统中的应用程序,与Java的应用程序相同,都是靠消息驱动,简单的说就是:有一个消息队列,我们可以不断的向这个消息队列中添加消息,并从中取出消息,处理消息。Android中与此工作相关...
  • smbroe
  • smbroe
  • 2015-03-13 16:21:04
  • 4748

Android中的Handler的机制与用法详解

目录结构 Android中的Handler的机制与用法详解,什么是Handler,如何传递 Message,传递 Runnable 对象,传递 Callback 对象,Handler 原理是什么...
  • wangning13ji
  • wangning13ji
  • 2016-08-23 11:43:52
  • 2150

handler的机制和例子解析

一:什么是handler:   今天学了handler,感觉用的还是蛮多的,所以做了一下总结,先来了解下下面的几个重要的组件 1:Message:Hander接收和处理消息对象 2:looper:每一...
  • qq_25591985
  • qq_25591985
  • 2016-01-15 12:08:16
  • 1300

Handler机制原理

在Android中谈到Handler,我们首先来讲一下Handler的机制和原理      1、Handler机制原理           Handler:主要是用来处理发送和接收消...
  • francisshi
  • francisshi
  • 2014-08-14 01:51:08
  • 1625

Handler机制

  • 2017年12月15日 22:54
  • 1.92MB
  • 下载

深入理解Android中的Handler机制

Handler机制在Android多线程编程中可以说是不可或缺的角色,也是必须掌握的内容,所以深入掌握并应用Handler异步处理机制在Android开发中显得特别重要。它在使用的过程中主要与Mess...
  • reakingf
  • reakingf
  • 2016-07-28 13:51:52
  • 12983

Handler详解(最容易看懂,最容易理解)

好吧好吧,今天去面试的时候,一个熊二般的面试官问我handler的机制,以及和Looper的关系,以及更新UI有哪些方式。可是我是小白啊,所以不知道,所以就不可能通过面试,不过今年工作可真不好找。回来...
  • bobo8945510
  • bobo8945510
  • 2016-07-08 21:44:51
  • 2960

handler消息机制源码解析

1, 基本概念 Handler主要做什么?机制是怎样的?有其他相同或者类似的机制吗? 我们知道,Binder主要用于跨进程通信,Handler呢?主要用于进程内部进行通信,或者说进程内部不同线程之间进...
  • u012439416
  • u012439416
  • 2016-09-14 21:48:53
  • 1012

有关Handler机制原理的总结

Handler是线程与线程间进行通信的一套机制。        Handler是常被开发者拿来更新UI的一种消息处理机制,它的运行机制需要底层的Looper和MessageQueue的支撑。...
  • duanmulirui
  • duanmulirui
  • 2017-03-31 15:30:50
  • 2714

Handler和Looper区别与关系详解

1.什么是Handler,我就不再赘述了,Handler的主要功能就是发送消息,更新UI仅仅是handler线程间通信的一个应用,不能算作Handler的功能 发送消息,发送给谁?用什么方式?最关建...
  • nijiajingye
  • nijiajingye
  • 2015-10-31 11:22:05
  • 634
    个人资料
    等级:
    访问量: 1万+
    积分: 674
    排名: 7万+
    博客专栏
    最新评论