Android Handler的使用!!!

大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:
view plain copy to clipboard print ?
  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 plain copy to clipboard print ?
  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.gif 0_12732583345cqN.gif


你可能感兴趣的:(android,handler)