android timer 用法的用法

& Android学习指南之三十四:Android定时器Timer的使用
Android学习指南之三十四:Android定时器Timer的使用
&&&&&& 我们将中自带的Timer和TimerTask两个类结合使用,可以实现执行一次定时任务,或者定期重复执行任务。&&&&&& 下面直接上例子,这个例子实现的是模拟发射火箭&&,那啥,这节课的例子有点水啊。&&&&&& 1、新建一个项目:Lesson34_Timer。&&&&&& 2、MainActivity.java代码如下:
package&basic.android. &&
import&java.util.T &&
import&java.util.TimerT &&
import&android.app.A &&
import&android.os.B &&
import&android.os.H &&
import&android.os.M &&
import&android.util.L &&
import&android.view.V &&
import&android.widget.B &&
import&android.widget.TextV &&
public&class&MainActivity&extends&Activity&{ &&
&&&&Timer& &&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{ &&
&&&&&&&&super.onCreate(savedInstanceState); &&
&&&&&&&&setContentView(R.layout.main); &&
&&&&&&&&&&
&&&&&&&&final&TextView&tv1&=&(TextView)&findViewById(R.id.textView1); &&
&&&&&&&&Button&b1&=&(Button)&findViewById(R.id.button1); &&
&&&&&&&&Log.i(&yao&,&Thread.currentThread().getName()); &&
&&&&&&&&&&
&&&&&&&&final&Handler&handler&=&new&Handler()&{ &&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&handleMessage(Message&msg)&{ &&
&&&&&&&&&&&&&&&&super.handleMessage(msg); &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&if(msg.what&0){ &&
&&&&&&&&&&&&&&&&&&&&tv1.setText(&&&+&msg.what); &&
&&&&&&&&&&&&&&&&}else{ &&
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&tv1.setText(&点火!&); &&
&&&&&&&&&&&&&&&&&&&&timer.cancel(); &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&} &&
&&&&&&&&}; &&
&&&&&&&&&&
&&&&&&&&b1.setOnClickListener(new&View.OnClickListener()&{ &&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&onClick(View&arg0)&{ &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&timer&=&new&Timer(); &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&timer.schedule(new&TimerTask()&{ &&
&&&&&&&&&&&&&&&&&&&&int&i&=&10; &&
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&&&&&&&&&public&void&run()&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&Log.i(&yao&,&Thread.currentThread().getName()); &&
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&Message&msg&=&new&Message(); &&
&&&&&&&&&&&&&&&&&&&&&&&&msg.what&=&i--; &&
&&&&&&&&&&&&&&&&&&&&&&&&handler.sendMessage(msg); &&
&&&&&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&},&1000,&200); &&
&&&&&&&&&&&&} &&
&&&&&&&&}); &&
}&&&&&&&& 3、文件,配置文件啊我都不上了啊,比较简单了,直接编译运行程序,查看结果:&&&&&& 好吧,本讲就这样结束了,其实你也学到了点东西哈:在Android里进行时间调度还是有方法的;对Android进行UI控制还是要用的,等等。弱弱的问一句,那些悄悄定时发短信的垃圾程序是用啥技术实现的呢?
本文发布:
本文地址:
发布:鸡啄米
&&( 0:27:34)&&( 23:52:19)&&( 21:58:33)&&( 23:44:40)&&( 0:7:3)&&( 20:40:29)
完全随机文章三种Timer的使用 - These days - 博客园
在.net中有三种计时器,一是System.Windows.Forms命名空间下的Timer控件,它直接继承自C二是System.Timers命名空间下的Timer类。
Timer控件:Timer控件只有绑定了Tick事件,和设置Enabled=True后才会自动计时,停止计时可以用Stop()控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的Form属于同一个线程;
System.Timers.Timer类:定义一个System.Timers.Timer对象,绑定Elapsed事件,通过Start()方法启动计时,通过Stop()方法或者Enable=False停止计时。AutoReset属性设置是否重复计时。Elapsed事件绑定就相当另开了一个线程,也就是说在Elapsed绑定的事件里不能访问其它线程里的控件。
System.Threading.Timer:定义该类时,主要有四个参数。TimerCallBack,一个返回值为void,参数为object的委托,也是计时器执行的方法。Object state,计时器执行方法的的参数。 int dueTime,调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
int Period,调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
在这三种计时器中,第一种计时器和所在的Form处于同一个线程,因此执行的效率不高。而第二种和第三中计时器执行的方法都是新开一个线程,所以执行效率比第一种计时器要好。因此在使用计时器时,建议使用第二种和第三种。
下面是三中定时器使用的例子
1)Timer控件&&
& public partial class Timer : Form&&& {
&&&&&&& int count = 0;&&&&&&& public Timer()&&&&&&& {&&&&&&&&&&& InitializeComponent();
&&&&&&&&&&& //timer控件可用&&&&&&&&&&& this.timer1.Enabled =
&&&&&&&&&&&//设置timer控件的Tick事件触发的时间间隔&&&&&&&&&&& this.timer1.Interval = 1000;
&&&&&&&&&&& //停止计时&&&&&&&&&&& this.timer1.Stop();&&&&&&& }
&&&&&&& private void timer1_Tick(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& count += 1;&&&&&&&&&&& this.tbTimer.Text = count.ToString();&&&&&&& }
&&&&&&& private void btStart_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& //开始计时&&&&&&&&&&& this.timer1.Start();&&&&&&& }
&&&&&&& private void btStop_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& //停止计时&&&&&&&&&&& this.timer1.Stop();&&&&&&&&&&& &&&&&&& }
2)System.Timers.Timer
public partial class Timer : Form&&& {&&&&&&& int count = 0;
&&&&&&& private System.Timers.Timer timer = new System.Timers.Timer();
&&&&&&& public Timer()&&&&&&& {&&&&&&&&&&& InitializeComponent();
&&&&&&&&&&& //设置timer可用&&&&&&&&&&& timer.Enabled =&&&&&&&&&&& &&&&&&&&&&& //设置timer&&&&&&&&&&& timer.Interval = 1000;
&&&&&&&&&&& //设置是否重复计时,如果该属性设为False,则只执行timer_Elapsed方法一次。&&&&&&&&&&& timer.AutoReset =
&&&&&&&&&&& timer.Elapsed+=new System.Timers.ElapsedEventHandler(timer_Elapsed);&&&&&&& }
&&&&&&& private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) &&&&&&& {&&&&&&&&&&& count += 1;&&&&&&&&&&& SetTB(count.ToString());&&&&&&& }
&&&&&&& private void btStart_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& timer.Start();&&&&&&& }
&&&&&&& private void btStop_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& timer.Stop();&&&&&&& }
&&&&&&& private delegate void SetTBMethodInvok(string value);
&&&&&&& private void SetTB(string value)&&&&&&& {&&&&&&&&&&& if (this.InvokeRequired) &&&&&&&&&&& {&&&&&&&&&&&&&&& this.Invoke(new SetTBMethodInvok(SetTB), value);&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& this.tbTimer.Text =&&&&&&&&&&& }&&&&&&& }&&& }
3) System.Threading.Timer
&&& public partial class Timer : Form&&& {&&&&&&& int count = 0;&&&&&&& System.Threading.Timer timerT&&&&&&& private delegate void SetTBMethodInvoke(object state);
&&&&&&& public Timer()&&&&&&& {&&&&&&&&&&& InitializeComponent();
&&&&&&&&&&& //初始化一个计时器,一开始不计时,调用Callback的时间间隔是500毫秒&&&&&&&&&&& timerThr = new System.Threading.Timer(new TimerCallback(SetTB), null, Timeout.Infinite, 500);&&&&&&& }
&&&&&&& public void SetTB(object value)&&&&&&& {&&&&&&&&&&& if (this.InvokeRequired)&&&&&&&&&&& {&&&&&&&&&&&&&&& this.Invoke(new SetTBMethodInvoke(SetTB), value);&&&&&&&&&&& }&&&&&&&&&&& else &&&&&&&&&&& {&&&&&&&&&&&&&&& count += 1;&&&&&&&&&&&&&&& this.tbTimer.Text = count.ToString();&&&&&&&&&&& }&&&&&&& }
&&&&&&& private void btStart_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& //开始计时&&&&&&&&&&& timerThr.Change(0, 500);&&&&&&& }
&&&&&&& private void btStop_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& //停止计时&&&&&&&&&&& timerThr.Change(Timeout.Infinite, 500);&&&&&&& }&&& }
Blog Stats
Trackbacks - 0vb中timer的用法(请高手帮忙)急..._vb吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:93,305贴子:
Private&Sub&cmd1_Click()
Timer1.Enabled&=&True
Private&Sub&Timer1_Timer()
Text1.Text&=&Time
End&Sub
但要求是
在名称为Form1的窗体上画一个文本框,名称为Text1,其初始值为0;画一个命令按钮,名称为Cmd1,标题为“开始计数”再画1个名称为“Timer1”的计时器。要求程序开始运行时不计数,点击“开始计时”按钮后,则使文本框每秒加1。注意,程序代码中不能使用任何变量。
我的程序,运行时是从当前时间开始运行的啊
他要求的是从0开始&
刘备:军师,此次伐魏你有何妙计?
timer1.interval=1000
a=a+1
text1.text=a
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或timer什么意思及同义词
沪江词库精选timer是什么意思、英语单词推荐、用法及解释、中英文句子翻译、英语短语、英音发音音标、美音发音音标。
英音 [ 'taim?(r) ] ; 美音 [ 'taim? ] 名词 (常构成复合词)时计;计时器;跑表;定时器
同义词:。
an old timer
[美]老资格,老手,守旧的人
young timer
[美]年轻人;没有经验的人
阶段(如一圈)计时器
Countdown timer
Part-timer
Enables self-timer shooting.
能进行自拍。
Reset lamp timer. Ref . chapter H
重置灯泡时计时器,参见H章
The little bell of the timer on the stove took up a show-spaced pinging
炉灶上计时器的小铃发出了一阵不急不徐的铃铃声。
The self-timer mode is not applicable when the shutter speed is set to “bulb”
当快门速度设置在B门时,不能用自拍模式。
The self-timer mode is not only useful for self-portraits but also for shake-free exposures with show shutter speeds.
自拍模式不仅可以用于自身肖像的拍摄,也可用于快门速度较慢时的无抖动曝光。
a timepiece that measures a time interval and signals its end
a regulator that activates or deactivates a mechanism at set times
(sports) an official who keeps track of the time elapsed
n. (球类比赛中的)暂时休息
n. 浪费时间的人(或物)
n. 提姆(人名)
1.倾斜,倾侧
2.(意欲赢得某物或战胜某人的)企图,尝试
1.[I,T](使)倾斜,倾侧
2.[I,T]使倾向于;使向...倾斜,偏向
1.(贴墙或铺地用的)瓷砖,地砖,小方地毯,片状材料
2.(铺屋顶的)瓦,瓦片
3.(棋盘游戏的)棋子
1. 铺瓦,贴瓷砖,铺地砖
2.【计算机】平铺显示,并列显示,瓦片式显示(视窗)
2016timer是什么意思由沪江网提供。c#各种Timer类的区别与用法介绍
字体:[ ] 类型:转载 时间:
System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务。在必须更新用户界面的情况下,建议不要使用该计时器,因为它的回调不在用户界面线程上发生
System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务。在必须更新用户界面的情况下,建议不要使用该计时器,因为它的回调不在用户界面线程上发生。在此类情况下,System.Windows.Threading.DispatcherTimer 是更好的选择,因为其事件是在用户界面线程上引发的。 多线程计时器1:System.Threading.Timer2:System.Timers.Timer特殊目的的单线程计时器:1:System.Windows.Forms.Timer(Windows Forms Timer)2:System.Windows.Threading.DispatcherTimer(WPF timer);多线程计时器比较强大,精确,而且可扩展性强;单线程计时器比较安全,对于更新 Windows Forms controls或者WPF这种简单任务来说更方便。 代码如下:System.Threading.Timer是最简单的多线程计时器。在下面的例子中,定时器在5秒后开始定时1秒的调用Tick方法。publicstaticvoidMain(){//5秒后开始运行,接着每隔1秒的调用Tick方法Timertmr=newTimer(Tick,"tick...",);Console.ReadLine();tmr.Dispose();}staticvoidTick(objectdata){Console.WriteLine(data);} .net framework提供的另一个计时器System.Timers.Timer.简单的对System.Threading.Timer进行了包装。增加了下面几个特性。
实现了Component,所以可以在设计器显示。代替Change方法的一个Interval属性代替callback委托的一个Elapsed事件启动和停止timer的Enabled属性,默认是false。为了避免Enabled造成混乱,提供了Start和Stop方法。是否在每次指定的间隔结束时引发Elapsed时间,还是仅间隔第一次结束后运行的AutoReset属性。在WPF或Windows Forms中安全的调用方法的SynchronizingObject对象。publicstaticvoidMainThread() 代码如下:{Timertmr=newTimer();tmr.Interval=500;tmr.Elapsed+=newElapsedEventHandler(tmr_Elapsed);tmr.Start();Console.ReadLine();tmr.Stop();Console.ReadLine();tmr.Start();Console.ReadLine();tmr.Dispose();}
staticvoidtmr_Elapsed(objectsender,ElapsedEventArgse){Console.WriteLine("Tick...");}单线程计时器:1:System.Windows.Forms.Timer(Windows Forms Timer)2:System.Windows.Threading.DispatcherTimer(WPF timer);
单线程计时器是被设计成属于他们执行环境的计时器,如果你在一个Windows服务应用程序中使用Windows Forms的Timer,timer 事件并不会被触发,只有在对应的环境下才会被触发。像System.Timers.Timer一样,他们也提供了相同的成员(Interval,Tick,Start,Stop),但是他们内部的工作原理不同,WPF和Windows Forms的计时器使用消息循环机制来取代线程池产生消息的机制。这意味着Tick事件总是在创建timer的那个线程上执行,同时也意味着如果上一个Tick消息还未被处理,即使时间超过了间隔时间,在消息循环中也只存在一个Tick消息。下面是它们的优点:你可以忘记线程安全。一个Tick事件在前一个Tick事件被处理完毕前不会被触发。你可以直接在Tick事件处理代码中更新控件,不需要调用Control.Invoke或Dispatcher.Invoke.看下在Winform中使用单线程定时器的效果: 代码如下://基于Windows消息循环的单线程计时器privateSystem.Windows.Forms.Timertimer=newTimer(){};
publicForm1(){InitializeComponent();
timer.Tick+=newEventHandler(timer_Tick);timer.Enabled=}
voidtimer_Tick(objectsender,EventArgse){//模拟的做一些耗时的操作System.Threading.Thread.Sleep(2000);}如果运行上面的代码,会发现UI界面响应速度很慢,原理上面已经介绍了:单线程计时器基于Windows消息循环,应用程序会同步的处理计时器的消息。解决这个问题的方法是使用多线程计时器:只要修改代码使用多线程计时器即可: 代码如下://使用多线程计时器privateSystem.Timers.Timertimer=newSystem.Timers.Timer();
publicForm1(){InitializeComponent();
timer.Elapsed+=newSystem.Timers.ElapsedEventHandler(timer_Elapsed);timer.Enabled=}
voidtimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse){//模拟的做一些耗时的操作System.Threading.Thread.Sleep(2000);} 上面的例子告诉我们单线程计时器的缺点:除非Tick事件的处理代码执行的非常快,否则UI界面会变得响应很慢。所以 WPF和Windows Forms的计时器都非常适合小任务,尤其是界面更新的任务。例如时钟和计数显示。否则,你需要一个多线程计时器。设为1000,再设一个变量每次加1.加12次后做你要做的事,这样就准了.
上面是2种自己使用一下,感觉那个好就可以了。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 android timer 用法 的文章

 

随机推荐