如何让程序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 extendsActivity {
//title为setTitle方法提供变量,这里为了方便我设置成了int型 privateint
title = 0; publicvoid
onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Timer timer =new
Timer(); timer.scheduleAtFixedRate(newMyTask(),
1,5000);
} privateclass
MyTask extendsTimerTask{
@Override publicvoid
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 extendsActivity {
//title为setTitle方法提供变量,这里为了方便我设置成了int型 privateint
title = 0; privateHandler mHandler =
newHandler(){
publicvoid
handleMessage(Message msg) { switch(msg.what) {
case1:
updateTitle(); break; } }; }; publicvoid
onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Timer timer =new
Timer(); timer.scheduleAtFixedRate(newMyTask(),
1,5000);
} privateclass
MyTask extendsTimerTask{
@Override publicvoid
run() { Message message =new
Message(); message.what =1;
mHandler.sendMessage(message); } } publicvoid
updateTitle(){ setTitle("Welcome to Mr Wei's blog "+ title);
title ++; } } |
本文介绍了一种使用Handler机制在Android应用中实现每隔5秒更新Activity标题的方法。通过对比直接使用TimerTask与采用Handler发送消息的方式,展示了如何在主线程中安全地更新UI。
1647

被折叠的 条评论
为什么被折叠?



