大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:
view plaincopy to clipboardprint?
  1. package com.android.tutor;

  2. import java.util.Timer;

  3. import java.util.TimerTask;

  4. import android.app.Activity;

  5. import android.os.Bundle;

  6. publicclass HandlerDemo extends Activity {

  7. //title为setTitle方法提供变量,这里为了方便我设置成了int型

  8. privateint title = 0;

  9. publicvoid onCreate(Bundle savedInstanceState) {

  10. super.onCreate(savedInstanceState);

  11. setContentView(R.layout.main);

  12. Timer timer = new Timer();

  13. timer.scheduleAtFixedRate(new MyTask(), 1, 5000);

  14. }

  15. privateclass MyTask extends TimerTask{

  16. @Override

  17. publicvoid run() {

  18. setTitle("Welcome to Mr Wei's blog " + title);

  19. title ++;

  20. }

  21. }

  22. }

然而当我们执行程序,并不能达到我们预期的效果,所以Android 引进了Handler 这个特殊的类,可以说它是Runnable和Activity交互的桥梁
,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。
所以我们修改后的代码如下:
view plaincopy to clipboardprint?
  1. package com.android.tutor;

  2. import java.util.Timer;

  3. import java.util.TimerTask;

  4. import android.app.Activity;

  5. import android.os.Bundle;

  6. import android.os.Handler;

  7. import android.os.Message;

  8. publicclass HandlerDemo extends Activity {

  9. //title为setTitle方法提供变量,这里为了方便我设置成了int型

  10. privateint title = 0;

  11. private Handler mHandler = new Handler(){

  12. publicvoid handleMessage(Message msg) {

  13. switch (msg.what) {

  14. case1:

  15. updateTitle();

  16. break;

  17. }

  18. };

  19. };

  20. publicvoid onCreate(Bundle savedInstanceState) {

  21. super.onCreate(savedInstanceState);

  22. setContentView(R.layout.main);

  23. Timer timer = new Timer();

  24. timer.scheduleAtFixedRate(new MyTask(), 1, 5000);

  25. }

  26. privateclass MyTask extends TimerTask{

  27. @Override

  28. publicvoid run() {

  29. Message message = new Message();

  30. message.what = 1;

  31. mHandler.sendMessage(message);

  32. }

  33. }

  34. publicvoid updateTitle(){

  35. setTitle("Welcome to Mr Wei's blog " + title);

  36. title ++;

  37. }

  38. }

下面我们看一下效果图:
0_12732583198S75.gif0_12732583345cqN.gif

本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/323922