Android初学习 - Handler使用的简单例子

Handler基本概念: 
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。
这种机制通常用来处理相对耗时比较长的操作。 

使用一个例子简单的来介绍一下Handler。 
示例1:一个应用程序中有2个按钮(start、end),当点击start按钮时,执行一个线程,这个线程在控制台输出一串字符串,并且每隔3秒再执行一次线程,直到点击end按钮为止,线程停止。 
下图为这个应用程序的界面: 

 

下图为执行程序时控制台的输出: 

 

开发步骤: 
1、 新建一个Android应用程序 
2、 在布局文件中添加2个Button控件标签,并为其设置属性和值 
3、 在Activity中,声明控件变量并根据id获得控件对象 
4、 在Activity中,创建一个Handler对象 
5、 在Activity中,创建一个Runnable对象 
a) 以匿名内部类的方式 
b) 将要执行的操作写在Runnable对象中的run()方法中 
i. 打印出一句话 
ii. 调用Runnable对象的postDelayed()方法 
6、 在Activity中,编写start按钮需要的监听器,并绑定 
a) 在这个监听器的Onclick()方法中,调用Handler的post()方法,将要执行的线程对象放到队列当中。 
7、 在Activity中,编写end按钮需要的监听器,并帮定 
a) 在这个监听器的Onclick()方法中,调用Handler的removeCallbacks ()方法,删除队列当中未执行的线程对象。 
b)
下面是Activity的代码: 
Java代码   收藏代码
  1. package android.handler;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.   
  10. public class HandlerTest extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     private Button startButton;  
  13.     private Button endButton;  
  14.       
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.         //根据id获得控件对象  
  20.         startButton = (Button)findViewById(R.id.startButton);  
  21.         endButton = (Button)findViewById(R.id.endButton);  
  22.         //为控件设置监听器  
  23.         startButton.setOnClickListener(new StartButtonListener());  
  24.         endButton.setOnClickListener(new EndButtonListener());  
  25.     }  
  26.       
  27.     class StartButtonListener implements OnClickListener{  
  28.         public void onClick(View v) {  
  29.             //调用Handler的post()方法,将要执行的线程对象放到队列当中  
  30.             handler.post(updateThread);  
  31.         }  
  32.     }  
  33.       
  34.     class EndButtonListener implements OnClickListener{  
  35.         public void onClick(View v) {  
  36.             //调用Handler的removeCallbacks()方法,删除队列当中未执行的线程对象  
  37.             handler.removeCallbacks(updateThread);  
  38.         }  
  39.           
  40.     }  
  41.       
  42.     //创建Handler对象  
  43.     Handler handler = new Handler();  
  44.     //新建一个线程对象  
  45.     Runnable updateThread = new Runnable(){  
  46.         //将要执行的操作写在线程对象的run方法当中  
  47.         public void run(){  
  48.             System.out.println("updateThread");  
  49.             //调用Handler的postDelayed()方法  
  50.             //这个方法的作用是:将要执行的线程对象放入到队列当中,待时间结束后,运行制定的线程对象  
  51.             //第一个参数是Runnable类型:将要执行的线程对象  
  52.             //第二个参数是long类型:延迟的时间,以毫秒为单位  
  53.             handler.postDelayed(updateThread, 3000);  
  54.         }  
  55.     };  
  56. }  

转载自:http://byandby.iteye.com/blog/832467
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值