Android 高手进阶教程:[9]Android Handler

2024-11-27 20:29:44

1、首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:viewplaincopytoclipboardprint?packagecom.android.tutor;importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.os.Bundle;publicclassHandlerDemoextendsActivity{//title为setTitle方法提供变量,这里为了方便我设置成了int型privateinttitle=0;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Timertimer=newTimer();timer.scheduleAtFixedRate(newMyTask(),1,5000);}privateclassMyTaskextendsTimerTask{@Overridepublicvoidrun(){setTitle("WelcometoMrWei'sblog"+title);title++;}}}packagecom.android.tutor;importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.os.Bundle;publicclassHandlerDemoextendsActivity{//title为setTitle方法提供变量,这里为了方便我设置成了int型privateinttitle=0;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Timertimer=newTimer();timer.scheduleAtFixedRate(newMyTask(),1,5000);}privateclassMyTaskextendsTimerTask{@Overridepublicvoidrun(){setTitle("WelcometoMrWei'sblog"+title);title++;}}

2、然而当我们执行程序,并不能达到我们预期的效果,所以Android引进了Handler这个特殊的类,可以说它是Runnabl髫潋啜缅e和Activity交互的桥梁,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。所以我们修改后的代码如下:viewplaincopytoclipboardprint?packagecom.android.tutor;importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;publicclassHandlerDemoextendsActivity{//title为setTitle方法提供变量,这里为了方便我设置成了int型privateinttitle=0;privateHandlermHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:updateTitle();break;}};};publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Timertimer=newTimer();timer.scheduleAtFixedRate(newMyTask(),1,5000);}privateclassMyTaskextendsTimerTask{@Overridepublicvoidrun(){Messagemessage=newMessage();message.what=1;mHandler.sendMessage(message);}}publicvoidupdateTitle(){setTitle("WelcometoMrWei'sblog"+title);title++;}}packagecom.android.tutor;importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;publicclassHandlerDemoextendsActivity{//title为setTitle方法提供变量,这里为了方便我设置成了int型privateinttitle=0;privateHandlermHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:updateTitle();break;}};};publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Timertimer=newTimer();timer.scheduleAtFixedRate(newMyTask(),1,5000);}

3、privateclassMyTaskextendsTimerTask{@Overridepublicvoidrun(){Messagemessage=newMessage();message.what=1;mHandler.sendMessage(message);}}publicvoidupdateTitle(){setTitle("WelcometoMrWei'sblog"+title);title++;}}下面我们看一下效果图:

Android 高手进阶教程:[9]Android Handler
猜你喜欢