`
布衣Sao年
  • 浏览: 7705 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Android线程机制Handler

阅读更多

一、Handler是什么?
Handler是一套更新UI的机制,也是一套消息处理机制。
android的主线程(界面线程)和work线程机制可以避免多线程导致线程并发的带来的混乱问题,而Handler在线程通信中起到了至关重要的作用。

二、Handler、Looper、MessageQueue、Message关系:(线程机制中各要素的关系)
handler先跟默认线程的looper关联,将message传送给looper的messageQueue中,然后通过looper.loop方法不断将messageQueue中的message直接回传给handler的handlerMessage方法进行处理,而handleMessage方法是在ui线程中执行了。

三、主线程和子线程通过handler进行通信:

1、实例化一个HandlerThread对象(HandlerThread类很好的避免了多线程并发使得threadHandler在于线程looper关联时,looper为空的情况。),使得子线程threadHandler能够与当前线程的looper进行关联,在子线程的handler的handleMessage方法中处理由主线程handlerMessage方法中自己发给自己的逻辑,而在该handleMessage方法中打印当前线程会发现是在子线程中执行的。

 

 

2、下图是主线程的handler,在handleMessage方法中通过子线程threadHandler发给子线程自己需要处理的消息:


简单讲就是主线程通过子线程中实例化的threadHandler给子线程发送消息,从而实现了主线程与工作线程的通信。

 

四、Handler常见问题

常见问题:

1、工作线程中handler实例化会出现looper空指针的异常,因为没有实例化looper

2、在非UI线程中执行了ui操作报异常

 

  • 大小: 102.9 KB
  • 大小: 91.3 KB
分享到:
评论

相关推荐

    android多线程机制

    android多线程机制教程 android多线程机制 android多线程机制 android多线程机制

    android 多线程 looper handler

    android 多线程 looper handler的讲解,轻松学明白androd的消息机制,附有很多实例。

    android多线程handler/message机制详解

    主要对handler 、message机制进行了详解,如果想了解更多android相关知识,可以去我博客看看

    android+多线程机制的讲解和例子

    4.线程:UI thread通常就是main thread,而Android启动程序时会替它建立一个Message Queue。 每一个线程里可含有一个Looper对象以及一个MessageQueue数据结构。在你的应用程序里,可以定义Handler的子类别来接收...

    模拟Android Handler机制Demo

    一个Android handler机制的Demo

    Android线程机制_2011_9_30更新

    给初学android或者对android的多线程机制还有点迷惑的人做点贡献。该文档会持续更新。 推荐:http://blog.csdn.net/androidbluetooth/article/details/6384641 关于invalidate参看:...

    android线程消息机制之Handler详解

    android线程消息机制主要由Handler,Looper,Message和MessageQuene四个部分组成。平常在开发中,我们常用来在子线程中通知主线程来更新,其实整个安卓生命周期的驱动都是通过Handler(ActivityThread.H)来实现的。 ...

    Android多线程及异步任务消息处理机制 一 Handler的使用

    Android多线程及异步任务消息处理机制 一 Handler的使用博文源代码 想要学习更多有关于Android的知识 请关注博客http: blog csdn net yegongheng

    Android 线程开发 开发实例

    针对这种消息循环的机制,我们引入一个新的机制Handler,我们有消息循环,就要往消息循环里面发送相应的消息,自定义消息一般都会有自己对应的处理,消息的发送和清除,把这些都封装在Handler里面,注意Handler只是...

    详解Android Handler 机制 (一)用法全解

    ps:这是关于Android Handler 机制的第一篇文章,主要来说一下Handler的用法,本文尽量归纳完全,如有缺漏,欢迎补充。 Handler的主要作用是切换线程,以及隐式的充当接口回调的作用,当子线程网络请求结束后,通过...

    Android handler message奇怪用法详解

    android的多线程消息处理机制核心成员handler,基本用法很简单,相关资料也很多。本例子给大家带来handler的奇葩用法,与大家一起分享。

    Android HandlerDemo

    二是方便统一管理,通过Handler可以统一进行对UI的管理,因为Handler采用消息处理的机制。就是另一个线程发送一个编号给消息所在的线程,那么该线程的消息处理程序就会收到该消息并进行处理,而消息采用int类型,...

    线程消息传送机制源码

    关于android线程和handler消息传送机制的一个源码

    Android Handler多线程详解

     Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI...

    Android_Handler

    这个资源主要有三个Demo文件 是用来展示Handler的异步处理消息的 第一个Demo展示了如何启动线程和暂停线程 第二个Demo采用了Handler的消息队列机制 第三个Demo用HandlerThread的looper来构造一个handler,然后该...

    Android Handler Looper Message 使用示例

    在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...

    Android多线程处理机制中的Handler使用介绍

    接下来让我介绍Android的Handler的使用方法。Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列。每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联。 Handler一般...

    Android消息机制Handler的工作过程详解

     在Android系统中,出于对性能优化的考虑,对于Android的UI操作并不是线程安全的。也就是说若是有多个线程来操作UI组件,就会有可能导致线程安全问题。所以在Android中规定只能在UI线程中对UI进行操作。这个UI线程...

Global site tag (gtag.js) - Google Analytics