大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:
view plaincopy to clipboardprint?
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 ++;
}
}
}
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执行不同的任务。
所以我们修改后的代码如下:
view plaincopy to clipboardprint?
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 ++;
}
}
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 ++;
}
}

更多相关文章

  1. Linux下的两种timer方法 (Android 下NDK开发)
  2. Android中VideoView播放当前工程中视频文件的方法
  3. Android Studio 中报错 程序包org.apache.http不存在 的解决方法
  4. Android中使用Makefile编译程序和库的方法
  5. 四、在ANDROID中调试程序
  6. Android应用程序安装过程浅析
  7. Google地图(Map)API在J2ME中使用方法
  8. Android应用程序键盘(Keyboard)消息处理机制分析(27)

随机推荐

  1. Android(安卓)ion异步网络和图像加载大大
  2. Android(安卓)用HttpClient 以Post方式提
  3. Android获取全局Context的方法
  4. Android(安卓)adt-bundle开发环境搭建小
  5. java.lang.IllegalAccessError: Class re
  6. Win8 专业版安装Android(安卓)Studio
  7. Android保持屏幕常亮唤醒状态的方法
  8. android gallery3d 源码分析(二)
  9. android调用其他人的so文件
  10. android,做一个定制化的TextView,在TextVie