Handler用来发消息和处理消息.典型的用法是更新界面.android不允许在子线程里面更新界面,通常是把Handler传到子线程中,在子线程里通过sendEmptyMessage函数发消息.Handler的handleMessage函数响应消息,实现更新界面.

下面看一个例子.Handler的定义如下:

public class PlayHandler extends Handler {
private ImageView imageView;
int currentImageId = 0;
private int[] imageIds = new int[] {
R.drawable.java,
R.drawable.ee,
R.drawable.ajax,
R.drawable.xml,
R.drawable.classic
};
public PlayHandler(ImageView imageView) {
this.imageView = imageView;
}
@Override
public void handleMessage(android.os.Message msg) {
if (msg.what == Message.PLAY) {
imageView.setImageResource(imageIds[currentImageId++
% imageIds.length]);
}
}
}

函数handleMessage用于处理消息,改变ImageView的内容.需要更新的时候只用拿到Handler的实例,调用sendEmptyMessage之类的函数即可.代码如下所示.

public class PlayTimerTask extends TimerTask {
private Handler handler; public PlayTimerTask(Handler handler) {
this.handler = handler;
}
@Override
public void run() {
handler.sendEmptyMessage(Message.PLAY);
}
}

源代码地址:https://github.com/zhouyang209117/AndroidTutorial/tree/master/Crazy/ch3/HandlerMsg

android学习9——Handler简单用法的更多相关文章

  1. Android学习笔记--Handler用法总结

    不错的例子:http://www.cnblogs.com/menlsh/archive/2013/06/07/3125341.html 转自:一叶知秋的博客 http://blog.sina.com. ...

  2. Android开发之Handler的用法(源码分享)

    Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.. 当应用程序启动时.Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发. ...

  3. Android学习之Layoutinflater的用法

    •她的第一次 话说,那是一个风雪交加的夜晚,看着她独自一个人走在漆黑的小道上,我抓紧跟了过去: 那晚,我们...... 记得第一次接触这个 Layoutinflater 应该是在学习 ListView ...

  4. Android学习笔记——Handler(二)

    对比请看http://blog.sina.com.cn/s/blog_78c913e30100uqmf.html 以下代码是MainActivity.java中的代码 package com.exam ...

  5. Android学习笔记——Handler(一)

    使用Handler管理线程(转) 步骤: 1. 申请一个Handler对象 Handler handler = new Handler(); 2. 创建一个线程 {继承Thread类或者实现Runna ...

  6. Android学习之Handler消息传递机制

    Android只允许UI线程修改Activity里的UI组件.当Android程序第一次启动时,Android会同时启动一条主线程(Main Thread),主线程主要负责处理与UI相关的事件,如用户 ...

  7. Android中AsyncTask的简单用法 .

    在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行.在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只 ...

  8. android学习11——Handler,Looper,MessageQueue工作原理

    Message是Handler接收和处理的消息对象. 每个线程只能拥有一个Looper.它的loop方法读取MessageQueue中的消息,读到消息之后就把消息交给发送该消息的Handler进行处理 ...

  9. android学习ViewPager的简单使用

    使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包.主要目的就是解决向下兼容问题. 1, ...

随机推荐

  1. js 回车触发事件

    <script type="text/javascript" language=JavaScript > document.onkeydown=function(eve ...

  2. Android动画之translate(位移动画)(转)

    转自:http://www.cnblogs.com/bavariama/archive/2013/01/29/2881225.html 上一篇文章讲了 Android的左右滑动切换,实现过程是非常简单 ...

  3. YII 1.0模型标签与验证规则,前后台验证

    model Admin.php model(),tabName()是固定格式 <?php /* 管理员模型 * ----------------------------------------- ...

  4. 1.4.1. Core Data Helper 简介(Core Data 应用程序实践指南)

    有些支持Core Data的内置模板是在应用程序委托里面设置Core Data的.但是为了模块化,我们通过应用程序委托惰性地创建CoreDataHelper类的实例: 初始化托管对象模型 根据托管对象 ...

  5. win8系统换win7系统

    吐槽一下先,win8换win7好费事~第一次弄,不过总算弄好了,记录一下吧. 首先,最坑人的就是,win8没法像win7那样按F1或者别的,直接进入BIOS,也就没法设置U盘引导,据说是由于win8的 ...

  6. ASP.NET MVC和jQuery DataTable整合

    本文包含代码示例说明如何jQuery插件开发者可以集成到ASP.NET MVC应用程序. 下载源代码- 87.4 KB Introduction The jQuery DataTables plug- ...

  7. Winform ListView的用法

    清除数据: lvOrder.Items.Clear(); 赋值数据: if (lvList.Count != 0) { foreach (var item in lvList) { string[] ...

  8. 如何改变xls中的单元格左上角的图标

    点绿色小三角的是文本型数字,是不能参与加减运算的.首先选中含有绿色小三角的单元格,右击鼠标选择,设置单元格格式, 数字选项卡,选择常规

  9. Wireshark对常见视频应用的抓包分析的结果

    一.PC端直播: YY客户端直播用的udp(P2P)9158客户端直播用的rtp/rtcp 二.Web端直播: YY网页端直播用的tcp9158网页端直播用的tcp六间房网页端直播用的tcp17173 ...

  10. 深入了解Android中的AsyncTask

    AsyncTask,即异步任务,是Android给我们提供的一个处理异步任务的类.通过此类,可以实现UI线程和后台线程进行通讯,后台线程执行异步任务,并把结果返回给UI线程.  我们知道,Androi ...