`

handler处理message

 
阅读更多

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();
	}

}
 
分享到:
评论

相关推荐

    Thread,Looper,Handler,Message,MessageQueue,MessagePool之间的关系

    Looper会从MessageQueue中取出下一个消息并交给Handler处理。MessageQueue通过addMessage()方法将新消息添加到队列,然后Looper通过pollNext()或next()方法获取队列中的下一个消息。 MessagePool是Message对象的...

    Handler Looper MessageQueue 源码解析

    在Android系统中,Handler、Looper和MessageQueue是实现线程间通信的核心组件,它们共同构建了一个消息处理机制。本文将深入解析这三者的源码,帮助你理解它们的工作原理,并教你如何手写一套自己的Handler系统。 ...

    android线程handler、message、looperDEMO

    通过`sendMessage()`或`post()`方法,`Handler`可以发送`Message`或`Runnable`到消息队列,等待`Looper`来处理。`Handler`还可以定义不同类型的回调方法,如`handleMessage(Message msg)`,当对应的消息被取出处理时...

    Android Handler Looper Message 使用示例

    在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...

    android多线程handler/message机制详解

    我们通常在 UI 线程中创建一个 Handler,Handler 相当于一个处理器,它主要负责处理和绑定到该 Handler 的线程中的 Message。然后,我们可以在后台线程中执行一些操作,并将结果通过 Message 发送给 Handler,...

    handler回调机制 demo

    5. **Handler处理Message**:Handler的`handleMessage()`方法被调用,这里执行具体的操作,如更新UI等。 6. **Looper继续循环**:处理完Message后,Looper会继续从队列中取出下一个Message,如此循环。 在提供的...

    Android中Handler与Message的简单实例

    Android中Handler与Message的简单实例 前言: 虽然笔者已经学习了Android的AsyncTask来实现一部消息的处理。但是在android的学习中,经常会在一些demo中看到Handler与Message的一些使用,所以Handler与Message的学习...

    Message,MessageQueue,Looper,Handler详解

    Looper是一个死循环,不停地处理MessageQueue中的消息。 Handler是为了方便多线程处理或异步处理而创建的数据结构,它拥有两个成员变量:一个是指向创建Handler所在的线程的Looper,另一个是该线程的消息队列。因此...

    Android handler message奇怪用法详解

    Looper是消息队列的循环器,它不断检查消息队列并分发消息给相应的Handler处理。Message则是承载数据的对象,用于在Handler间传递信息。 常规的Handler用法包括: 1. **创建Handler**:在主线程中创建Handler实例...

    Android应用源码之HandlerMessage1_HandlerMessage.zip

    在Android应用开发中,HandlerMessage1_HandlerMessage是一个关键的主题,涉及到Android系统中的消息处理机制,尤其是Handler、Message和Looper的使用。这些组件是Android异步编程的重要组成部分,用于解决UI线程与...

    一个activity中多个handler和消息的处理过程

    每个Handler可以根据其功能来定义处理Message的方式,比如更新特定的UI元素或执行特定的操作。 在处理消息的过程中,Looper会按照先进先出(FIFO)的顺序从队列中取出Message。这意味着,如果同时有多个Message待...

    android的消息处理机制(图+源码分析)——Looper,Handler,Message

    android源码中包含了...android的消息处理有三个核心类: Looper,Handler和Message。 其实还有一个Message Queue(消息队列) , 但是MQ被封装到Looper里面了, 我们不会直接与 MQ打交道, 因此我没将其作为核心类。

    Android的Message机制(Handler、Message、Looper)

    在这个过程中,`Looper`会不断地调用`MessageQueue.next()`方法来获取下一个待处理的消息,并通过`Handler.dispatchMessage()`方法将消息传递给对应的`Handler`进行处理。 #### 三、MessageQueue详解 `Message...

    Handler+Looper+MessageQueue

    这就是 Android 的异步处理机制,其中 Handler、Looper 和 MessageQueue 是关键组件,它们共同构成了 Android 线程间通信的基础。 1. **Handler**: Handler 是一个接口,用于发送和处理消息。它与 Looper 关联,...

    Android单线程模型中Message、Handler、Message Queue、Looper之间的关系---附实例源码

    Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,再有Handler进行Message的分发和处理. 简单定义: 1、Message Queue(消息队列): 用来存放通过Handler发布的消息,通常...

    Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系 - Hongyang -

    - Handler是消息处理器,它与特定线程(通常为UI线程)相关联,负责发送和处理Message。 - Message是数据载体,它封装了要传递的信息,并在Handler和Looper之间传递。 这种异步消息处理机制使得在Android中可以安全...

    Handler_Message_Looper小结

    `Looper` 的典型工作模式是调用 `loop()` 方法进入无限循环,从而不断从 `MessageQueue` 中读取消息并传递给对应的 `Handler` 进行处理。 4. **MessageQueue (消息队列)**:`MessageQueue` 是一个 `Looper` 的成员...

    理解handler,message,Android简单时钟程序

    3. **Message**:`Message`是`Handler`用来接收和处理消息的对象。它包含了一个`what`字段用于标识消息类型,`obj`字段可以携带任何数据,以及一些其他可选字段。在时钟程序中,`Message`可能用来携带当前的时间,...

    Android应用源码之HandlerMessage2_应用.zip

    4. **处理Message**:主线程中的Looper会不断检查消息队列,如果有待处理的消息,就会调用Handler的`handleMessage(Message msg)`方法。在这里,开发者可以编写处理消息的逻辑,比如更新UI。 5. **Looper**:在...

    Android_Handler消息处理机制

    在Android系统中,Handler、Message和Looper构成了一个关键的异步通信机制,即Handler消息处理机制。这个机制允许Android应用程序在不同的线程间传递消息,处理UI更新等操作,是多线程编程中的重要组成部分。下面...

Global site tag (gtag.js) - Google Analytics