在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();
复制代码
虽然这个例子不是很难,但我希望大家看了这篇文章以后对大家有一点的帮助,这样就可以了,呵呵如果大家要是有什么别的思路也可以拿出来分享一下,这样的话我们这些人也会更快的成长呀。呵呵
分享到:
相关推荐
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
NULL 博文链接:https://huangbowen-java.iteye.com/blog/1666353
vc 定时器 Timer 多媒体定时器 毫秒 ms
TIA博途中编写的定时器Timer为什么不工作?
1. 包含了STM32互补输出和TIM2作为从定时器 2. Timer1而作为另一个定时器Timer2的预分频器,进行计数 3. 使用STM32CubeMX生成代码
Java定时器Timer简述.pdf
GSM定时器timer专题
定时器Timer用法及其源码
VC++ 例子,一个程序中使用多个定时器(Timer)的例子
spring定时器Timer.rarspring定时器Timer.rarspring定时器Timer.rarspring定时器Timer.rarspring定时器Timer.rarspring定时器Timer.rar
C#定时器(Timer)实现了随着时间的变化,代码自动运行,以改变界面顔色的方式表达定时器
Android中使用CountDownTimer封装CountDownUtil,制作一个简易定时器,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/75022049
用vc实现的基于线程的定时器Timer,通常vc++的定时器timer是基于窗体的,由窗体消息驱动,而本程序实现的timer是基于线程的,不用windows消息驱动,而是基于线程事件驱动的
本文介绍了Android定时器Timer的停止和重启实现代码,分享给大家,具体如下: 7月份做了一个项目,利用自定义控件呈现一幅动画,当时使用定时器来控制时间,但是当停止开启时总是出现问题。一直在寻找合理的方法...
12-2-1-定时器 Timer-相关例程演示 12-2-2-定时器 Timer-特性及时钟 12-2-3-定时器 Timer-模式
定时器Timer实例,直接看代码说明,代码详细
C#定时器实现例子,包括三种实现方式System.Windows.Forms、System.Timers、System.Threading.Timer
stm32f103 定时器timer代码: 1、通过启用单片机TIMER3,开始计数。 2、TIMER计数器配置为1秒中断一次,进入中断之后,LED灯亮灭一次。 3、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片...
Java定时器Timer简述共8页.pdf.zip