在Android应用开发中,会经常需要有定时器Timer的需求,一种方案是直接使用java.util.Timer来做定时器,但需要多线程来完成。如果您不想在应用中使用过多的多线程,那么使用下面这个简单的定时器是一个可选的方案。下面的例子是使用了android.os.Handler来完成的。
Java代码:
import android.os.Handler;
public class Timer {
private int _interval;
public int getInterval() { return _interval; }
public void setInterval(int delay) { _interval = delay; }
private Handler handler;
private Runnable _tickHandler;
private Runnable delegate;
private boolean ticking;
public boolean getIsTicking(){ return ticking; }
public Timer(int interval) {
_interval = interval;
handler = new Handler();
}
public Timer(int interval, Runnable onTickHandler) {
_interval = interval;
setOnTickHandler(onTickHandler);
handler = new Handler();
}
public void start(int interval, Runnable onTickHandler) {
if (ticking) return;
_interval = interval;
setOnTickHandler(onTickHandler);
handler.postDelayed(delegate, _interval);
ticking = true;
}
public void start() {
if (ticking) return;
handler.postDelayed(delegate, _interval);
ticking = true;
}
public void stop() {
handler.removeCallbacks(delegate);
ticking = false;
}
public void setOnTickHandler(Runnable onTickHandler) {
if (onTickHandler == null)
return;
_tickHandler = onTickHandler;
delegate = new Runnable() {
public void run() {
if (_tickHandler == null) return;
_tickHandler.run();
handler.postDelayed(delegate, _interval);
}
};
}
}
复制代码
下面是调用Timer的例子:
Java代码:
boolean blinkOn = false;
Timer tmrBlink = new Timer(500, new Runnable() {
public void run() {
if (blinkOn) {
((TextView) findViewById(R.id.widget46)).setVisibility(View.VISIBLE);
}
else
{
((TextView) findViewById(R.id.widget46)).setVisibility(View.INVISIBLE);
}
blinkOn = !blinkOn;
}
});
tmrBlink.start();
复制代码
虽然这个例子不是很难,但我希望大家看了这篇文章以后对大家有一点的帮助,这样就可以了,呵呵如果大家要是有什么别的思路也可以拿出来分享一下,这样的话我们这些人也会更快的成长呀。呵呵
Java代码:
import android.os.Handler;
public class Timer {
private int _interval;
public int getInterval() { return _interval; }
public void setInterval(int delay) { _interval = delay; }
private Handler handler;
private Runnable _tickHandler;
private Runnable delegate;
private boolean ticking;
public boolean getIsTicking(){ return ticking; }
public Timer(int interval) {
_interval = interval;
handler = new Handler();
}
public Timer(int interval, Runnable onTickHandler) {
_interval = interval;
setOnTickHandler(onTickHandler);
handler = new Handler();
}
public void start(int interval, Runnable onTickHandler) {
if (ticking) return;
_interval = interval;
setOnTickHandler(onTickHandler);
handler.postDelayed(delegate, _interval);
ticking = true;
}
public void start() {
if (ticking) return;
handler.postDelayed(delegate, _interval);
ticking = true;
}
public void stop() {
handler.removeCallbacks(delegate);
ticking = false;
}
public void setOnTickHandler(Runnable onTickHandler) {
if (onTickHandler == null)
return;
_tickHandler = onTickHandler;
delegate = new Runnable() {
public void run() {
if (_tickHandler == null) return;
_tickHandler.run();
handler.postDelayed(delegate, _interval);
}
};
}
}
复制代码
下面是调用Timer的例子:
Java代码:
boolean blinkOn = false;
Timer tmrBlink = new Timer(500, new Runnable() {
public void run() {
if (blinkOn) {
((TextView) findViewById(R.id.widget46)).setVisibility(View.VISIBLE);
}
else
{
((TextView) findViewById(R.id.widget46)).setVisibility(View.INVISIBLE);
}
blinkOn = !blinkOn;
}
});
tmrBlink.start();
复制代码
虽然这个例子不是很难,但我希望大家看了这篇文章以后对大家有一点的帮助,这样就可以了,呵呵如果大家要是有什么别的思路也可以拿出来分享一下,这样的话我们这些人也会更快的成长呀。呵呵