package com.lilin.handler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
/**
* 通过Handler实现2秒自动换图
*
* @author lilin
* @date 2011-8-10 上午08:51:27
* @ClassName: Main
* @Description: TODO
*/
public class HandlerMessageDemo extends Activity {
private ImageView myImageView;// ImageView的引用
private Handler myHandler = new Handler() {// 创建一个Handler对象
public void handleMessage(Message msg) {// 重写接收消息的方法
switch (msg.what) {// 判断what的值
case 0:// what值为0时
myImageView.setImageResource(R.drawable.bbta);
break;
case 1:// what值为1时
myImageView.setImageResource(R.drawable.bbtb);
break;
case 2:// what值为2时
myImageView.setImageResource(R.drawable.bbtc);
break;
case 3:// what值为3时
myImageView.setImageResource(R.drawable.bbtd);
break;
}
super.handleMessage(msg);
}
};
public void onCreate(Bundle savedInstanceState) {// 重写的onCreate方法
super.onCreate(savedInstanceState);
setTitle("handler通信:每2秒自动换图");
setContentView(R.layout.main);// 设置当前的用户界面
// Handler和Activity不属于同一线程,所以Hander实现了对消息的异步处理
String text = "当前activity的ID--->" + Thread.currentThread().getId();
System.out.println(text);
text = "当前activity的名称--->" + Thread.currentThread().getName();
System.out.println(text);
myImageView = (ImageView) findViewById(R.id.myImageView);
new Thread() {
public void run() {
int i = 0;
while (true) {// 循环
myHandler.sendEmptyMessage((i++) % 4);// 发送消息
String text = "handler的ID" + Thread.currentThread().getId();
System.out.println(text);
text = "handler的名称" + Thread.currentThread().getName();
System.out.println(text);
try {
Thread.sleep(2000);// 注意这边加了延迟
} catch (Exception e) {
e.printStackTrace();
}
}
};
}.start();
}
}
分享到:
相关推荐
在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...
Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,再有Handler进行Message的分发和处理. 简单定义: 1、Message Queue(消息队列): 用来存放通过Handler发布的消息,通常...
android源码中包含了...android的消息处理有三个核心类: Looper,Handler和Message。 其实还有一个Message Queue(消息队列) , 但是MQ被封装到Looper里面了, 我们不会直接与 MQ打交道, 因此我没将其作为核心类。
android的多线程消息处理机制核心成员handler,基本用法很简单,相关资料也很多。本例子给大家带来handler的奇葩用法,与大家一起分享。
使用处理程序延迟主线程上的工作;...我们看到,一个Message经由Handler的发送,MessageQueue的入队,Looper的抽取,又再一次地回到Handler的怀抱中。而绕的这一圈,也正好帮助我们将同步操作变成了异步操作。
摘要视图订阅标签: Android分类:目录(?Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系95220人
Message(消息):需要被传递的消息,其中包含了消息标识(what),消息处理数据和处理对象(arg1,arg2,obj),发送该消息的Handler对象(target)等,由MessageQueue统一列队,最终由Handler处理。 MessageQueue(消息...
Android 异步处理 Handler+Looper+MessageQueue深入详解
这篇文章写的非常好,深入...这不,前几天为了了解android的消息处理机 制,我看了Looper,Handler,Message这几个类的源码,结果又一次被googler的设计震撼了,特与大家分享。 android的消息处理有三个核心类:Looper
Android中Handler与Message的简单实例 前言: 虽然笔者已经学习了Android的AsyncTask来实现一部消息的处理。但是在android的学习中,经常会在一些demo中看到Handler与Message的一些使用,所以Handler与Message的学习...
android demo,使用Runnable和Handler的特性实现每个3s的定时器
Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。 Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage(Message msg)方法...
在程序开发时,我们经常会使用Handler处理Message(消息)。所以可以知道Handler是个消息处理者,Message是消息主体。除此之外还有消息队列和消息轮询两个角色。它们分别是MessageQueue和Looper,MessageQueue就是消息...
线程A的Handler对象参考可以传递给别的线程,让别的线程B或C等能送讯息来给线程A(存于A的Message Queue里)。 线程A的Message Queue里的讯息,只有线程A所属的对象可以处理之。 使用Looper.myLooper可以取得...
demo05: 通过handler.sendMessage和handleMessage发送处理消息 demo06: message传递bundle demo07: 加载一张网络图片 demo08: handler完成gridview的图文混排 demo09: 拦截消息,通过removeMessage() demo10: 拦截...
似的机制,接收和处理Native层的消息。Java层和Native层的消息循环是独立运行的,彼此的Message并不会 互通,Native使用epoll机制来实现监听及触发,并向JAVA层提供了接口。 这里从Java层开始深入探究下Handler和...
安卓应用开发基础的消息处理机制分析。对应用工程师很有帮助。
1.1 知识解析 1.2 功能演示 1.3 实战操作 1.4 职业素质
Android 是消息驱动的,实现消息驱动有几个要素: 消息的表示: Message 消息队列: MessageQueue 消息循环,用于循环取出消息进行处理: Looper 消息处理,消息循环从消息队列中取出消息后要对...息进行处理: Handler