1. 程式人生 > >android Timer 簡單好用

android Timer 簡單好用

藉助Handler 和Runnable 實現。直接上程式碼,拿去用吧。

public class CKTimer
{
public interface TimerInterFace
{
/**
* 幹事情
*/
void doWork();
}

private TimerInterFace tf;
// 時間間隔
private int timeinterval = 0;
// 是否在執行中
private boolean running = false;

/**

* @param t
*            回撥通知幹事情
* @param timeinterval
*            間隔多久執行一次
*/
public CKTimer(TimerInterFace t, int timeinterval)
{
this.tf = t;
this.timeinterval = timeinterval;

}

private Handler handler = new Handler();

private Runnable runnable = new Runnable()
{

public void run()
{
handler.postDelayed(this, timeinterval); // postDelayed(this,1000)方法安排一個Runnable物件到主執行緒佇列中
update();
}

private void update()
{
// TODO Auto-generated method stub
if (tf != null)
tf.doWork();
}

};

/**
* 開始timer
*/
public void start()
{
if (!running)
{
running = true;
handler.postDelayed(runnable, timeinterval); // 開始Timer
}
}

/**
* 停止timer
*/
public void stop()
{
running = false;
handler.removeCallbacks(runnable); // 停止Timer
}
}

呼叫:



public CKTimer timer;

btn.setOnClickListener(new View.OnClickListener()
{

@Override
public void onClick(View v)
{
if (timer == null)
timer = new CKTimer(new TimerInterFace()
{

@Override
public void doWork()
{
// TODO Auto-generated method stub
txt.setText(String.valueOf(++index));
}
}, 1000);
timer.start();
}
});
btn2.setOnClickListener(new View.OnClickListener()
{

@Override
public void onClick(View v)
{
timer.stop();
}
});
}