`
abc20899
  • 浏览: 908973 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 定时器Timer例子

阅读更多
在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();
复制代码
       虽然这个例子不是很难,但我希望大家看了这篇文章以后对大家有一点的帮助,这样就可以了,呵呵如果大家要是有什么别的思路也可以拿出来分享一下,这样的话我们这些人也会更快的成长呀。呵呵
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics