Android高手进阶教程(九)之----Android(安卓)Handler的使用!
16lz
2021-01-26
大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:
[java]view plaincopy- 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++;}}}
然而当我们执行程序,并不能达到我们预期的效果,所以Android 引进了Handler 这个特殊的类,可以说它是Runnable和Activity交互的桥梁,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。
所以我们修改后的代码如下:
[java]view plaincopy- 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++;}}
下面我们看一下效果图:
更多相关文章
- 屏幕触点
- 关于Activity的少许细节
- 简单实现Android绘图板
- android应用程序--计算器
- 下载Android(安卓)ADT时找不到org.eclipse.wst.sse.core 0.0.0的
- Android(安卓)程序安装地址问题
- 关于Android中Animation的停止
- Android获得所有存储设备位置的最佳方法
- Android(安卓)软键盘盖住输入框或者布局的解决办法