本讲内容:Android Timer计时器

抱歉,这一讲似乎有点水啊,实际上Timer和TimerTask都是JDK自带的功能,两个类结合可以实现定时任务执行一次,或者定期重复执行任务。

好吧上例子,这个例子实现的模拟发射火箭……,那啥,这节课的例子也好水啊。

1、新建一个项目:Lesson34_Timer

2、MainActivity.java代码如下:



 ​

 


​01​

​package​​ ​​basic.android.timer; ​


​02​

 


​03​

​import​​ ​​java.util.Timer; ​


​04​

​import​​ ​​java.util.TimerTask; ​


​05​

 


​06​

​import​​ ​​android.app.Activity; ​


​07​

​import​​ ​​android.os.Bundle; ​


​08​

​import​​ ​​android.os.Handler; ​


​09​

​import​​ ​​android.os.Message; ​


​10​

​import​​ ​​android.util.Log; ​


​11​

​import​​ ​​android.view.View; ​


​12​

​import​​ ​​android.widget.Button; ​


​13​

​import​​ ​​android.widget.TextView; ​


​14​

 


​15​

​public​​ ​​class​​ ​​MainActivity ​​​​extends​​ ​​Activity { ​


​16​

 


​17​

​Timer timer; ​


​18​

 


​19​

​@Override​


​20​

​public​​ ​​void​​ ​​onCreate(Bundle savedInstanceState) { ​


​21​

​super​​​​.onCreate(savedInstanceState); ​


​22​

​setContentView(R.layout.main); ​


​23​

 


​24​

​// 定义UI组件 ​


​25​

​final​​ ​​TextView tv1 = (TextView) findViewById(R.id.textView1); ​


​26​

​Button b1 = (Button) findViewById(R.id.button1); ​


​27​

 


​28​

​Log.i(​​​​"yao"​​​​, Thread.currentThread().getName()); ​


​29​

 


​30​

​// 定义Handler ​


​31​

​final​​ ​​Handler handler = ​​​​new​​ ​​Handler() { ​


​32​

 


​33​

​@Override​


​34​

​public​​ ​​void​​ ​​handleMessage(Message msg) { ​


​35​

​super​​​​.handleMessage(msg); ​


​36​

​//handler处理消息 ​


​37​

​if​​​​(msg.what>​​​​0​​​​){ ​


​38​

​tv1.setText(​​​​""​​ ​​+ msg.what); ​


​39​

​}​​​​else​​​​{ ​


​40​

​//在handler里可以更改UI组件 ​


​41​

​tv1.setText(​​​​"点火!"​​​​); ​


​42​

​timer.cancel(); ​


​43​

​} ​


​44​

​} ​


​45​

​}; ​


​46​

 


​47​

​// 定义按钮的点击监听器 ​


​48​

​b1.setOnClickListener(​​​​new​​ ​​View.OnClickListener() { ​


​49​

 


​50​

​@Override​


​51​

​public​​ ​​void​​ ​​onClick(View arg0) { ​


​52​

​// 定义计时器 ​


​53​

​timer = ​​​​new​​ ​​Timer(); ​


​54​

 


​55​

​// 定义计划任务,根据参数的不同可以完成以下种类的工作:在固定时间执行某任务,在固定时间开始重复执行某任务,重复时间间隔可控,在延迟多久后执行某任务,在延迟多久后重复执行某任务,重复时间间隔可控 ​


​56​

​timer.schedule(​​​​new​​ ​​TimerTask() { ​


​57​

​int​​ ​​i = ​​​​10​​​​; ​


​58​

 


​59​

​// TimerTask 是个抽象类,实现的是Runable类 ​


​60​

​@Override​


​61​

​public​​ ​​void​​ ​​run() { ​


​62​

 


​63​

​Log.i(​​​​"yao"​​​​, Thread.currentThread().getName()); ​


​64​

 


​65​

​//定义一个消息传过去 ​


​66​

​Message msg = ​​​​new​​ ​​Message(); ​


​67​

​msg.what = i--; ​


​68​

​handler.sendMessage(msg); ​


​69​

​} ​


​70​

 


​71​

​}, ​​​​1000​​​​, ​​​​200​​​​); ​


​72​

​} ​


​73​

​}); ​


​74​

 


​75​

​} ​


​76​

 


​77​

​}​

  因为timer.schedule(task,5000) 是表示执行一次的任务。

        timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,

 


3、布局文件,配置文件啊我都不上了啊,你们看源码去,不看源码也能猜出来的,直接编译运行程序,查看结果:

​ ​

​ ​

好吧,本讲就这样结束了,其实你也学到了点东西哈,在Android里进行时间调度还是有方法的,在Android里进行UI控制还是要用Handler的,弱弱的问一句,那些悄悄定时发短信的垃圾程序是用啥技术实现的呢?