java 定时器实现的两种方法

14 篇文章 0 订阅

在Java需要开定时器来定时完成的调度,有两种简单的方法,一种是标准的定时器实现;一种是间接通过Handler来定时调度来实现。

1,标准的定时器方法,依赖包类名如下:

import java.util.Timer;

{

private Timer testTimer = null;

private int test_timer = 0;

/***定义实现的任务***/

private class testTimerTask extends java.util.TimerTask{
    
          @Override  
          public void run() {  
              test_timer ++;
              if(test_timer >= 10)
              {
                test_timer = 0;
              } 
          }  
};


testTimer = new Timer();
testTimer.schedule(new testTimerTask(), 5000, 1000); /***5000:延迟多长时间后开始,1000:定时的周期;单位是ms(毫秒)****/

/*****结束后取消定时器******/

void releaseTimer()

{

   testTimer .cancel();

   testTimer = null;

}

}


2,借助Handler的实现方式:

import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;

{

 private
    Handler mTimerHandler = null;
  private
    Handler mHandlerMsg = null;
  private
    Runnable mTimeRefresher = null;

private int test_timer = 0;

mTimerHandler = new Handler(mcontext.getMainLooper());
mTimeRefresher = new Runnable() {
    @Override public void run() {
    test_timer++;
    if (test_timer >= 10) {
        test_timer = 0;
      }

    mTimerHandler.postDelayed(this, 1000); /*****1000:下次发生的时间,单位ms(毫秒)*****/
    }
  };


mTimerHandler.post(mTimeRefresher); /********第一次触发启动*********/


/*****结束后取消定时器******/

public

    void releaseTimerHandler()

    {

     mTimerHandler.removeCallbacks(mTimeRefresher);

     mTimeRefresher = null;

     mTimerHandler = null;

   }

}


以上两种方法中,因为第二种方法是通过UI的线程调度的,定时的精度不是很准确!容易受到外部的影响。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值