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();
}
});
}