定时器 Timer

 本例代码包括Handler 发送消息的简单实现过程.具有普遍意义
Java.util.Timer 与  android.widget.Chronometer 在功能上有些类似,但Timer 比Chronometer 更强大,Timer 除了可以指定循环执行的时间间隔外,还可以重复执行和不重复执行,Chronometer 类一般用来计时

Timer 定时执行功能是在TimeTask类中实现, Time 实际上是在线程中执行run方法,  与 Handler 相比,Handler 是将执行的动作放到Android系统的消息队列中.因此,使用Timer 执行run()时,在run()方法内不能直接更新GUI组件

在这里介绍一下发送消息的过程:   
首先定义一个定时类Timer,通过schedule方法启动定时器------>根据schedule 参数timerTask,创建TimerTask类,在其中run()中,定义一个Message类,初始化message.what =1, sendMessage()发送消息传到线程中
---------------> 在Handler 类通过handleMessage()方法,判断msg.what条件作出更新UI组件等处理,整个过程结束

主要代码:

public class Main extends Activity   {
 private ProgressBar progressBar;
 private Handler handler = new Handler()    {
  public void handleMessage(Message msg)    {
   switch (msg.what)     {
    // 必须在这里更新进度条组件
    case 1:
     int currentProgress = progressBar.getProgress() + 10;
     if (currentProgress > progressBar.getMax())
      currentProgress = 0;
     progressBar.setProgress(currentProgress);
     break;
   }
   super.handleMessage(msg);
  }
 };
 private TimerTask timerTask = new TimerTask()    {
  public void run()    {
   // 使用sendMesage 方法发送一条消息
   Message message = new Message();
   message.what = 1;
   handler.sendMessage(message);
  }
 };

 @Override
 public void onCreate(Bundle savedInstanceState)   {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  progressBar = (ProgressBar) findViewById(R.id.progressbar);
  Timer timer = new Timer();  
  //启动Timer定时器,并在每0.2s 更新一次进度
  timer.schedule(timerTask, 0, 200);
 }
}

示意图



具体代码请参见 ch08_timer工程 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值