`
liu86th
  • 浏览: 117981 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[转]Android Handler的使用 --- 循环执行

 
阅读更多

 

大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.

 

首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:

 

 

package com.android.tutor;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
public class HandlerDemo extends Activity {
    
	//title为setTitle方法提供变量,这里为了方便我设置成了int型
	private int title = 0;
	
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new MyTask(), 1, 5000);
    }
        
    private class MyTask extends TimerTask{
		@Override
		public void run() {
			
			setTitle("Welcome to Mr Wei's blog " + title);
			title ++;
		}  	
    }
}

 

 

然而当我们执行程序,并不能达到我们预期的效果,所以Android 引进了Handler 这个特殊的类,可以说它是Runnable和Activity交互的桥梁

,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。

 

所以我们修改后的代码如下:

 

 

package com.android.tutor;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class HandlerDemo extends Activity {
    
	//title为setTitle方法提供变量,这里为了方便我设置成了int型
	private int title = 0;
	
	private Handler mHandler = new Handler(){
		
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case 1:
				updateTitle();
				break;
			}
		};
	};
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new MyTask(), 1, 5000);
    }
        
    private class MyTask extends TimerTask{
		@Override
		public void run() {
			
			Message message = new Message();
			message.what = 1;
			mHandler.sendMessage(message);
			
		}  	
    }
    
    
    public void updateTitle(){
    	
    	setTitle("Welcome to Mr Wei's blog " + title);
		title ++;
    }
}

 

 

下面我们看一下效果图:

 

分享到:
评论

相关推荐

    Android_Handler01-源码.rar

    【Android_Handler01-源码】是一个关于Android Handler机制的源码分析项目。在Android开发中,Handler、Looper和Message是实现线程间通信的重要组件,尤其在UI更新和异步任务处理上扮演着核心角色。这个源码库可能是...

    android-Handler的使用

    【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...

    android学习--handler

    在Android开发中,`Handler`是一个至关重要的组件,它用于处理主线程中的消息调度,实现UI线程与后台线程之间的通信。`Handler`、`Looper`和`Message`是Android异步处理的核心三剑客,它们共同协作,保证了应用的...

    模拟Android Handler机制Demo

    【Looper】是Android中的一个类,它在一个线程中循环读取MessageQueue(消息队列),一旦发现有Message,就将其传递给相应的Handler进行处理。每个线程都有自己的Looper,但默认情况下只有主线程(UI线程)有一个...

    androidHandler测试的demo

    在“androidHandler测试的demo”中,我们可以预期包含以下内容: 1. 创建自定义`Handler`子类:这个子类可能重写了`handleMessage(Message msg)`方法,根据`msg.what`的值执行不同的操作,比如更新UI元素或执行特定...

    Android handler message奇怪用法详解

    通常,我们使用Handler配合Looper和Message来实现在主线程(UI线程)中执行后台任务的结果。Looper是消息队列的循环器,它不断检查消息队列并分发消息给相应的Handler处理。Message则是承载数据的对象,用于在...

    Android Handler传值的demo

    总结起来,`Android Handler传值的demo`展示了如何在主线程和工作线程之间通过`Message`对象传递数据,这对于更新UI或者执行耗时操作后通知主线程非常有用。通过熟练掌握`Handler`、`Message`和`Looper`的工作原理,...

    android handler例子

    `Handler`是Android中处理消息和执行延迟操作的对象,通常在主线程中创建。它的主要职责是接收由其他线程发送的`Message`对象,并在适当的时机调用`handleMessage()`方法来处理这些消息。 `Looper`是消息循环,它...

    Android中handler的使用

    总结来说,Handler是Android中处理多线程和UI同步的核心工具,理解其工作原理和使用方法对于开发高效、稳定的Android应用至关重要。通过熟练掌握Handler,开发者可以更好地控制应用的执行流程,确保UI响应性和性能。...

    Android中的Handler的具体用法

    本文将深入探讨`Handler`的工作原理、如何使用以及它在Android应用程序中的实际应用。 `Handler`机制是Android系统为了实现线程间通信而设计的一种模式,主要包含三部分:`Handler`、`Message`和`Looper`。`Handler...

    android handler runnable使用实例(关键是内部run中停止)

    通常,我们会在主线程(UI线程)中创建一个Handler实例,这样处理的消息就会在这个线程中执行,这对于更新UI是必要的,因为Android只允许主线程操作UI。 `Runnable`是一个接口,它定义了一个单个方法`run()`. 任何...

    Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解

    ### Android开发工程师面试题之Handler详解 在Android开发过程中,Handler是进行线程间通信的重要机制之一,尤其在实现异步任务更新UI等场景中扮演着关键角色。本篇文章将围绕Handler的工作原理、核心组件及其实现...

    Android Handler解析

    # Android Handler解析 在Android应用开发中,保持应用程序的响应性是至关重要的。为了实现这一目标,我们需要确保UI线程不会被阻塞。...掌握Handler的使用,对于提高Android应用的性能和用户体验至关重要。

    android Handler详细使用方法实例

    在上述代码中,我们看到了如何使用Handler和Runnable来实现一个简单的线程启动和停止的逻辑,同时通过postDelayed方法实现了一个延时任务的循环执行。这种模式在Android开发中非常常见,它体现了Android UI编程的单...

    Android_Handler消息处理机制

    如果要在其他线程中使用Handler,就需要手动调用Looper.prepare()初始化Looper,然后用Looper.loop()启动消息循环。 Handler消息处理机制的工作流程如下: 1. 在需要发送消息的地方,通过Handler实例的sendMessage...

    android多线程handler/message机制详解

    Android 多线程Handler/Message机制详解 Android 多线程机制是 Android 应用程序中最重要...Handler 和 Message 机制是 Android 多线程机制的核心组件,它们允许应用程序在后台执行一些操作,而不影响用户的交互体验。

    【Android开发入门】Android线程之Handler

    Handler是Android中处理消息和调度任务的对象,它通常与Looper和Message配合使用,实现线程间的通信。主线程中默认有一个Looper对象,负责接收和分发Message,而Handler则用来发送Message到Looper,从而实现主线程的...

    android中的handler的使用方法

    本文将深入探讨Android中的Handler机制及其使用方法。 首先,理解Handler的基本概念。Handler是Android消息处理系统的一部分,它与Looper和Message紧密协作,用于在不同线程之间传递消息和执行任务。通常,主线程...

    Android Handler Looper

    在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制,尤其是在主线程与工作线程之间同步数据和执行UI更新时。Handler、Looper和Message三者结合使用,构建了一个消息处理系统,使得非UI线程...

    Android_Handler的线程队列Demo

    在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制。这个"Android_Handler的线程队列Demo"旨在演示如何有效地利用Handler来处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互...

Global site tag (gtag.js) - Google Analytics