提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示
package cn.caiwb.handler;
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("hi~ " + title);
title ++;
}
}
}
然而当我们执行程序,并不能达到我们预期的效果,所以Android 引进了Handler 这个特殊的类,可以说它是Runnable和Activity交互的桥梁
,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。
所以我们修改后的代码如下:
package cn.caiwb.handler;
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(hi~ " + title);
title ++;
}
}
分享到:
相关推荐
以下是关于Handler使用相关的三个实例所体现的知识点的详细解释: 1. **Handler的创建和工作原理** Handler的创建通常需要配合Looper。Looper是每个线程中的消息循环器,它负责接收并分发Message。在主线程中,...
本篇文章将深入探讨`Handler`的使用方法,包括其基本概念、工作原理以及如何避免内存泄露和实现定时任务。 ### 1. Handler基本概念 `Handler`是Android消息处理机制的核心部分,它与`Looper`和`Message`共同协作,...
Android的Handler使用方法总结,不错的文档,跟大家分享分享
本文将深入解析`Handler`的使用,以及结合`Thread`实现异步操作的具体示例。 首先,`Handler`是Android消息处理系统的核心组件,它主要用于发送和处理消息。`Handler`对象通常在主线程中创建,这样它可以处理与UI...
本篇将详细讲解Handler的使用,包括如何创建Handler对象、如何发送和处理消息,以及主线程与子线程之间的消息传递。 首先,Handler的基本结构主要包括三部分:Handler对象、Looper循环器和Message消息对象。在...
本篇将详细介绍`Handler`的原理、使用方法及其在实际开发中的应用。 `Handler`是Android消息处理机制的核心组件,它的主要作用是发送和处理消息。在Android系统中,主线程负责处理用户界面的所有操作,而耗时的操作...
【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...
1. **基本Handler使用** 基本的`Handler`使用通常涉及到创建`Handler`对象,然后在后台线程中通过`Looper`和`Message`与之交互。以下是一个简单的例子: ```java // 在主线程中创建Handler Handler mHandler = ...
本文将深入探讨`Handler`的工作原理、如何使用以及它在Android应用程序中的实际应用。 `Handler`机制是Android系统为了实现线程间通信而设计的一种模式,主要包含三部分:`Handler`、`Message`和`Looper`。`Handler...
Handler在子线程中的使用以及注意事项
以下是一个简单的Handler使用示例: ```java public class MainActivity extends Activity { private TextView tv; private Handler handler; private static final int TURNTEXT = 1; @Override protected ...
Handler使用简单功能强大,常被用作线程间传递消息的组件,而且还可以用于跨进程。 消息机制背后有包括Looper ,MessageQueue管理和分发消息的实现,同时在Native层也单独实现了一套类 似的机制,接收和处理Native...
`Handler` 的使用方法通常涉及创建`Handler`对象、发送`Message`以及处理这些消息。在本教程中,我们将深入探讨`Handler`的工作原理及其在实际应用中的使用。 首先,让我们看一个简单的例子,假设我们想要每隔5秒钟...
本篇文章将详细探讨如何在Android中使用Thread和Handler实现多线程通信,确保非UI线程能够安全地更新UI。 首先,Android应用程序的主线程(UI线程)主要负责管理用户界面,处理用户交互事件。主线程不允许执行长...
下面是一个简单的Handler使用示例: ```java class MainActivity extends AppCompatActivity { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // 这里是...
【Android开发笔记:Handler使用总结】 在Android应用开发中,Handler是处理线程间通信和UI更新的关键组件。当应用程序启动时,Android系统会默认创建一个主线程(UI线程),该线程主要负责管理界面中的UI控件,...
以下是一个简单的Handler使用示例: 1. 创建一个Handler实例,通常在主线程中创建,这样它可以访问主线程的消息队列: ```java Handler handler = new Handler() { @Override public void handleMessage(Message ...
本文将深入探讨如何在Fragment和Activity之间使用Handler进行交互。 首先,了解Handler的基本概念。Handler是Android中的一个消息处理类,它主要用来处理运行在主线程中的Message对象。通过创建一个Handler实例并与...