博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Handler的介绍及实例
阅读量:6265 次
发布时间:2019-06-22

本文共 997 字,大约阅读时间需要 3 分钟。

Handler类的介绍

主要作用:处理大量数据的功能放在单独一个类中
1.Handler的基本使用
  Handler在使用过程中涉及到两个队列
  1)线程队列
   注意的方法:
   a./**调用post方法,将线程对象加入到消息队列中*/
      handler.post(thread);
   b./**从线程队列中清除此线程对象*/
      handler.removeCallbacks(thread);
   c./**调用postDelayed方法,将线程对象延时加入到消息队列中*/
      handler.postDelayed(thread, 2000);
  2)消息队列
    /**将msg对象加入到消息队列当中*/
    handler.sendMessage(msg);
2.Handler与线程的关系
   1)利用handler的话直接调用run方法
        执行的是同一个线程,实现方法是handler.post(r);
   2)利用start方法开启
        执行是不同线程,实现方法必须调用start()方法开启
   3)利用handler来实现线程的异步操作
        用到一个重要的类叫looper:循环的从队列中取得消息的功能
    实现异步的步骤:
        a. 先生成一个HandlerThread对象,启动start()方法
       /**生成一个HandlerThread对象,实现了使用looper对象来处理消息队列的功能*/
           HandlerThread handlerThread = new HandlerThread("handler Thread");
           handlerThread.start();
    b.开启start()方法
       handlerThread.start();
    c.创建一个handler,此时的handler从handlerThread得到的参数looper
       MyHandler handler = new MyHandler(handlerThread.getLooper());
3.Bundle只能以String为键,值为其他基本数据类型的特殊Map
   在handler中传递消息时会使用的类型:
   1)当传递小量数据
       msg.arg1  int 类型
       msg.arg2  int 类型
       msg.obj    引用数据类型
   2)当传递大量数据使用Bundle对象
       绑定数据时候使用msg.setData(b)
       取数据时候使用msg.getData()
       

转载地址:http://aqdpa.baihongyu.com/

你可能感兴趣的文章
在web.xml中配置初始化参数
查看>>
Java多线程下 ThreadLocal 的应用实例
查看>>
Serializable:序列化代理
查看>>
SQL中表约束是什么意思
查看>>
JS中小数的差,比较大小
查看>>
堆数据结构
查看>>
codeforces / project Euler 泛做
查看>>
对JS中事件委托的理解
查看>>
非确定性计算引擎转化为C#版本并重构
查看>>
解决问题:Django admin页面样式丢失
查看>>
获取指定<文字行数>的<高度>是多少 TextKit
查看>>
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
查看>>
Asp.Net Core实战(干货)
查看>>
获取客户端内网IP
查看>>
ReportServices开发工具
查看>>
JavaScript学习——JavaScript 作用域 事件
查看>>
Codeforces Round #455 (Div. 2)F. AND-permutations[bitmasks]
查看>>
知识树软件的数据流图(DFD图)
查看>>
异步调用与回调机制
查看>>
【086】◀▶ 51CTO中的博客
查看>>