zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

android开发教程之android的handler使用方法

Android方法教程开发 使用 handler
2023-06-13 09:15:16 时间

AndroidHandler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:

复制代码代码如下:


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{ 
       @Override 
       publicvoidrun(){ 

           setTitle("WelcometoMrWei"sblog"+title); 
           title++; 
       }    
   } 

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

复制代码代码如下:


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{ 
       @Override 
       publicvoidrun(){ 

           Messagemessage=newMessage(); 
           message.what=1; 
           mHandler.sendMessage(message); 

       }    
   } 

     
   publicvoidupdateTitle(){ 

       setTitle("WelcometoMrWei"sblog"+title); 
       title++; 
   } 


下面我们看一下效果图: