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. debian 7 安装vagrant

    下载 vagrant_1.4.3_x86_64.deb: $ wget http://966b.http.dal05.cdn.softlayer.net/data-production/2f0b88e ...

  2. Java中的数据类型和引用

    JAVA数据类型分primitive数据类型和引用数据类型. Java中的primitive数据类型分为四类八种.primitive也不知道怎么翻译比较贴切, 暂且叫他基本数据类型吧, 其实直接从英文 ...

  3. 在ionic项目中使用极光推送实现推送 & 服务器端代码

    ionic start -a jPushDemo -i com.lawxin.fengkong jpushdemo blank meteor add cordova:cn.jpush.phonegap ...

  4. Centos 7下利用crontab定时执行任务详解

    一 cron服务 cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond ...

  5. rocketmq源码分析4-事务消息实现原理

    为什么消息要具备事务能力 参见还是比较清晰的.简单的说 就是在你业务逻辑过程中,需要发送一条消息给订阅消息的人,但是期望是 此逻辑过程完全成功完成之后才能使订阅者收到消息.业务逻辑过程 假设是这样的: ...

  6. day04_03 题目判断三个数字中的最大值

    num1 = input("Num1:") num2 = input("Num2:") num3 = input("Num3:") 输出三个 ...

  7. Flask_配置文件

    flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: default_config = ImmutableDict({ 'DEBUG': get_debug ...

  8. Oracle PL/SQL 语言(Procedural Language/SQL)

    Oracle PL/SQL 语言(Procedural Language/SQL)是结合了结构化查询与 Oracle 自身过程控制为一体的强大语言,PL/SQL 不但支持更多的数据类型,拥有自身的变量 ...

  9. 爬取本blog的所有标题和链接

    #coding=utf-8 from bs4 import BeautifulSoup import urllib.request for i in range(1,54): url = " ...

  10. [BZOJ3585][BZOJ3339]mex

    [BZOJ3585][BZOJ3339]mex 试题描述 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. 输入 第一行n,m.第二行为n个数.从 ...