`
mmdev
  • 浏览: 12922238 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android 开发 —— Handler的使用

 
阅读更多
最近通过看mars的视频学Android,下面是关于handler的一些笔记。
使用Handler创建一个Runnable任务并加入队列。
  • 创建Handler对象和一个相应的Runnable对象
  • 后者即为Java中常用的线程(Thread)中涉及到的Runnable
  • 使用post(或postDelayed)方法将Runnable对象放入执行队列,注意这并不代表任务会马上得到执行的机会
  • 通过在Runnable中postDelayed自身可以实现循环任务
  • 使用handler.removeCallback取消已被post的任务
以上就是Handler最基本的用法了。需要极为注意的一点是,通过以上方法使用handler,即在当前Activity类中直接创建Runnable对象和Handler对象的话,实际上我们并没有创建新线程!Runnable所在的线程其实就是当前的Activity线程。这就相当于我们用Thread的时候在自己的类中实现Runnable接口并调用了this.start(),其实是同一线程。 所以一般在使用的时候我们可以这样:
HandlerThread ht=new HandlerThread("Thread name");
ht.start();
MyHandler mh=new MyHandler(ht.getLooper());

其中MyHandler继承了Handler,重写handlerMessage方法。这样我们的Handler就在新线程中了。可以用来在后台处理一些耗时的操作。

其实Handler的存在还有另一个意义,那就是处理Message。
每个Handler都属于创建它的那个ui线程,这一线程有一个相应的MessageQueue(再新建线程时不会另外创建队列,这一队列可用来做线程间和同一线程不同组件间的通信),使用Handler可以将一个Message加入到消息队列中,并定义收到此消息的处理方法(通过在定义Handler时重写handleMessage方法)。
  • 得到Message对象:handler.obtainMessage。使用new Message()是不推荐的。
  • 如果需要传递的信息较少可通过直接赋值给msg.arg1 arg2 和obj成员变量来传递,否则使用setData
  • handler.sendMessage(msg)。
分享到:
评论

相关推荐

    Android开发与应用——张荣,原书配套课件

    这是Android开发与应用,原书配套的课件,作者张荣,目录如下。 第1章 Android简介 1.1 手机操作系统 1.2 Android起源 1.3 Android特征 1.4 Android体系结构 1.4.1 应用层 1.4.2 应用框架层 1.4.3 ...

    老罗android开发视频教程全集百度网盘下载

    【第一版第十一章】老罗Android开发视频--通知的使用(2集) 【第一版第十二章】老罗Android开发视频--菜单的使用(4集) 【第一版第十三章】老罗Android开发视频--异步加载数据库(2集) 【第一版第十四章】老罗...

    NettyAndroid,Netty在Android中的使用

    Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用:https://azhon.blog.csdn.net/article/details/100831777 Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线...

    Android项目设计与开发:Handler.ppt

    嵌入式Android项目设计与开发 第七章 多线程 ——(3)UI线程冲突 多线程 即使Android可以使用线程, 但规定不能使用子线程修改主线程的内容。 多线程 可以考虑在子线程中使用runOnUiThread重新载入UI线程,并干预...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全的目录

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 ...

    Google Android SDK开发范例大全(完整版)

    余志龙,来自于手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse...

    安卓学习教材经验Android进阶学习资料安卓面试资料等文档资料合集(22个).zip

    安卓学习教材经验Android进阶学习资料安卓面试资料等文档资料合集(22个): ...初中级Android开发社招面试之Handler.pdf 初中级Android开发社招面试之JNI.pdf 初中级Android开发社招面试之Service及BroadcastReceiver.p

    Google Android SDK 开发范例大全01

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android SDK 开发范例大全02

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google Android sdk 开发范例大全 部分章节代码

    7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...

    Google+Android+SDK开发范例大全

    ) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义...

    深入理解Android:卷I--详细书签版

     邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的 Android企业,负责Framework的开发和...

    Android知识点及重要代码合集 word文档

    18.1 使用Handler完成子线程发送消息和Runnable对象到主线程 250 18.2 使用Handler完成主线程发送消息到子线程 256 18.3内存泄露和内存溢出的区别以及引用的级别 260 18.4 使用软引用解决Handler内存泄漏问题 262 ...

    Android多线程及异步处理问题详细探讨

    2)多线程实现方式implements Runnable 或 extends Thread 3)多线程核心机制是Handler 4)提供如下几种实现方式 —-1—–Handler ————————————说明1 创建一个Handler时一定要关联一个Looper实例,默认...

Global site tag (gtag.js) - Google Analytics