handler缺点:如果要运送两种类型的数据(比如一个Bitmap,一个Object)就不能运送,但可以用Bunder来传输
 *    使用handler的步骤:
 *    1、创建一个handler
 *    2、在需要用到数据传输的地方通过handler得到message对象,通过message携带要传输的数据
 *    3、直接通过handler发送消息到主线程
 *    4、在主线中通过重写handlerMessage,接收传输过来的数据

如果在onCreate启动的子线程做的操作不耗时,这个时候操作控件,错误是存在的,只是没有检测出来,因为这个时候控件还没来得及绘制
子线程向主线程传送消息
    程序步骤:
    1、发送一个空消息(不用构造message对象,而是直接给一个消息标记)
handler.sendEmptyMessage(1);
    2、发送一个带message的信息
        //1.通过Handler得到一个信息
        Message message = handler.obtainMessage();
// Message message2 = Message.obtain();
 //2.通过这个信息,携带数据
        message.obj = "" ;    //用来传输复杂数据
        message.arg1 = 100;  //用来传输简单整数类型
        message.arg2 = 200;  //用来传输简单整数类型
        message.what = 300;  //一般用来给message打标记的,因为一般可以传多个message
        //3.利用handler发送消息,从子线程发送到主线程
        handler.sendMessage(message);
//发送延迟消息
//handler.sendMessageDelayed(message, 3000);        //隔3秒后再发送消息
//handler.sendEmptyMessageDelayed(5, 3000);
主线程向子线程传送消息
    步骤与上面类似。
    在接收数据的地方new Handler(){} 并重写方法
    在发送数据的地方sendMessage()
不一样的地方:
在接收数据的地方,要写Looper.prepare();   //相当于初始化looper对象
  Looper.loop();        //循环
  总结:如果在主线程中接收消息,就不用写Looper,因为主线程中自带有一个Looper对象,并且也在循环工作;
              但在子线程中没有looper对象,所以必须我们自己去创建,并且让它循环。所以,在子线程中接收数据之
              前要先调用Looper.prepare()方法,再调用Looper.loop()方法
    //子线程中只要有了looper对象,就可以写吐司。主线程中自带有looper对象,所以可以直接写吐司。
//如果把吐司写到Looper.prepare();之前就会报错。
 
图片的循环播放 开启一个子线程,做一个死循环
注意:在子线程中延迟发送要用Thread.sleep()方法,不能用handler.sendMessageDelayed(message, 2000);
因为子线程一旦启动了,就会一直进行,所以效果就是只有第一次会延迟发送消息,后面的就不会了,就会
一直发送。而在主线程中就可以使用handler.sendMessageDelayed(message, 2000);来延迟发送
主线程向主线程传送消息

    方法类似。。。
Handler中的post方法
 直接把数据从子线程抛到主线程

    实际上,每一个空间也有post方法,如下:

    

Handler处理机制相关推荐

  1. Android开发:图文分析 Handler通信机制 的工作原理

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 下面,将图文详解 Handler机制 的工作原理 目录 1. 定义 一套 Android 消息传递机制 2. 作用 在多线程的 ...

  2. handler消息机制入门

    handler消息机制入门 为什么要用handle? 我们在网络上读取图片信息时,是不能把耗时操作放在主线程里面的,当我们在子线程中获取到了图片的消息的时候,我们就需要把这个数据传给主线程. 而直接使 ...

  3. 【Android开发】线程与消息处理-Handler消息传递机制之Looper

    在前面已经介绍了在Android中如何创建.开启.休眠和中断线程.不过,此时并没有在新创建的子线程中对UI界面上的内容进行操作,如果应用前面介绍的方法对UI界面进行操作,将抛出异常. 为此,Andro ...

  4. handler 消息处理机制

    关于handler消息处理机制,只要一提到,相信作为一个android工程师,脑海就会有这么一个流程 大家都滚瓜烂熟了,但别人问到几个问题,很多人还是栽到这个"烂"上面,比如: 一 ...

  5. Android Handler处理机制 ( 三 ) ——Handler,Message,Looper,MessageQueue

    在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handle ...

  6. Android 系统(59)---Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)

    Android开发:Handler异步通信机制全面解析(包含Looper.Message Queue) 前言 最近刚好在做关于异步通信的需求,那么,今天我们来讲解下Android开发中的Handler ...

  7. Netty 编解码器和 Handler 调用机制

    基本说明 1.Netty 的组件设计:Netty 的主要组件有 Channel.EventLoop.ChannelFuture.ChannelHandler.ChannelPipe 等 2.Chann ...

  8. Android Handler消息机制源码分析

    一,前言 众多周知, Android 只允许在主线程中更新UI,因此主线程也称为UI线程(ActivityThread). 如此设计原因有二: (1) 由于UI操作的方法都不是线程安全的,如果多个线程 ...

  9. Android 消息机制(Handler运行机制)

     1 Android 消息机制 Android 的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑 2 为什么要用Handler消息 ...

  10. Android Handler消息机制不完全解析

    1.Handler的作用 Android开发中,我们经常使用Handler进行页面的更新.例如我们需要在一个下载任务完成后,去更新我们的UI效果,因为AndroidUI操作不是线程安全的,也就意味着我 ...

最新文章

  1. 参与2011年7月13日举行的Azure国际猜拳锦标赛,赢取5,000美元大奖
  2. vc 运行c语言步骤,第1章_C语言概述(vc++环境如何运行c语言程序)[精选].ppt
  3. [ofbiz]less-than (lt;) and greater-than (gt;) symbols
  4. Dell Caps Lock 切换大小写被窃取焦点问题解决办法
  5. python维度变换_Python NumPy用法
  6. 搞个游戏赚大钱!华为云搞了个吃鲲游戏,约你来打怪!
  7. 完整安卓项目开发过程和一些细节问题
  8. [转]asp导入excel数据到sql 2000
  9. Javascript函数作为参数——JS学习笔记
  10. 南邮2020/2021电工电子技术期末试卷
  11. 如何在matlab坐标轴上输入希腊字符和开根号符号
  12. [足式机器人]Part3机构运动微分几何学分析与综合Ch01-1 平面运动微分几何学——【读书笔记】
  13. 【OpenBMC 系列】3.bitbake介绍
  14. 卡西欧计算机蓝屏的处理方法,电脑出现蓝屏怎么办 电脑出现蓝屏解决方法【图文详解】...
  15. (基因功能 基因表达调控)研究方案
  16. C++: explicit的适用场合以及为什么要使用explicit
  17. nRF24L01--2.4G无线通信模块(1)(51单片机和51单片机通信)
  18. 水清冷冷:PSCC2021安装图文教程及学习技巧(附工具)
  19. 解决电脑“自动修复 电脑未正确启动/无法修复你的电脑”
  20. linux添加fcitx输入法,Ubuntu下轻松安装FCITX输入法

热门文章

  1. 用商业模式改变世界(上)
  2. Windows SharePoint Services Search和Office SharePoint Server Search的区别
  3. 【Window】使用技巧
  4. centos6.9安装虚拟机kvm
  5. PyCharm基本使用
  6. 向数据源DataTable 中添加新的一列,并向其赋值
  7. 【转】匈牙利命名法则
  8. 本人从事软件技术开发也有多年,打算先尝试往外迈一步试试!
  9. jquery特效 商品SKU属性规格选择实时联动
  10. 3 笔经小结-智力篇