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消息机制

    前言: 无论是现在所做的项目还是以前的项目中,都会遇见线程之间通信.组件之间通信,目前统一采用EventBus来做处理,在总结学习EventBus之前,觉得还是需要学习总结一下最初的实现方式,也算是不 ...

  2. Handler消息机制与Binder IPC机制完全解析

    1.Handler消息机制 序列 文章 0 Android消息机制-Handler(framework篇) 1 Android消息机制-Handler(native篇) 2 Android消息机制-H ...

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

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

  4. Android应用开发学习笔记之多线程与Handler消息处理机制

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 和JAVA一样,Android下我们可以通过创建一个Thread对象实现多线程.Thread类有多个构造函数,一般通 ...

  5. Handler消息机制实现更新主UI

    如下实现的是简单的更新主UI的方法,用Handler消息机制 将textview的内容每隔一秒实现num++ /* * handler消息机制 * asynctask异步任务 *  * httpcli ...

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

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

  7. 源码篇——Handler消息机制

    Handler消息机制 Message 消息 Message.obtain() Message msg = new Message() Handler new Handler(){ handlerMe ...

  8. 安卓开发_深入理解Handler消息传递机制

    一.概述 因为子线程的run()方法无法修改UI线程(主线程)的UI界面,所以Android引入了Handler消息传递机制,实现在新创建的线程中操作UI界面 二.消息类(Message) 消息类是存 ...

  9. Handler消息机制的一些原理(直接用code讲解)——Android开发

    package com.example.handlertest; import android.os.Bundle; import android.os.Handler; import android ...

  10. Android Handler消息机制源码解析

    好记性不如烂笔头,今天来分析一下Handler的源码实现 Handler机制是Android系统的基础,是多线程之间切换的基础.下面我们分析一下Handler的源码实现. Handler消息机制有4个 ...

随机推荐

  1. jmeter中重要组件及其执行顺序

    jmeter中重要组件有:Sampler,计时器,前置处理器和后置处理器,断言,Controller,Listener和配置原件. 同类组件之间是从上到下的顺序执行,不同组件之间是按照以下的顺序执行的 ...

  2. CodeForces 8D Two Friends 判断三个圆相交

    题意: 有两个人\(Alan\)和\(Bob\),他们现在都在\(A\)点,现在\(Bob\)想去\(B\)点,\(Alan\)想先到\(C\)点再去\(B\)点. \(Alan\)所走的总路程不能超 ...

  3. 《Scrum实战》第1次课课后任务

    1.必做任务:从知行角度总结T平台 从知行角度总结T平台 头(知识,学习) 做得好的 宣贯会 引入敏捷思想 敏捷宣言 敏捷原则 质量风险前移原则 引入最佳实践 包括了XP的大部分实践 不足 项目管理框 ...

  4. Ubuntu关机与重启的相关指令

    将数据同步写入到磁盘中的指令:sync 惯用的关机指令:shutdown 重新启动,关机:reboot,halt,poweroff shutdown可完成如下工作: 1.可以自由选择关机模式:是要关机 ...

  5. ogre3D学习基础8 --- 资源管理器

    资源管理 可管理的资源有: 材质资源:在.material文件中包含的材质脚本定义(技术.通路.纹理单元等数据的定义). 模型资源:经过优化的二进制网格模型文件,扩展名为.mesh.包含几何信息和一些 ...

  6. 一张图展示:用两个栈来实现一个队列,完成队列的Push和Pop操作

    一  基本思路 将s1作为存储空间,以s2作为临时缓冲区. 入队时,将元素压入s1. 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒 ...

  7. 【LeetCode】Binary Tree Preorder Traversal(二叉树的前序遍历)

    这道题是LeetCode里的第144道题. 题目要求: 给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很 ...

  8. Python 单例模式(3种方式)

    方式一: # 单例模式: # 实现目的:实例化多次,得到的实例是同一个,就是同一个对象,同一个名称空间(更加节省空间) ####################################方式一: ...

  9. PHP协程是通过生成器实现的,这里测试了PHP生成器的一些特性

    学习PHP的生成器,测试了一些特性.代码如下: function gen() { $name = (yield 'hello'); $nickname = (yield 'world'); yield ...

  10. 开发者工具删除元素Delete Element

    开发者工具有个很好用的功能,通过删除元素,可以查看页面哪些元素比较特殊,同时也可以排除干扰.