我们将JDK中自带的Timer和TimerTask两个类结合使用,可以实现执行一次定时任务,或者定期重复执行任务。
下面直接上例子,这个例子实现的是模拟发射火箭……,那啥,这节课的例子有点水啊。
1、新建一个项目:Lesson34_Timer。
2、MainActivity.java代码如下:
Java代码
- package basic.android.timer;
- import java.util.Timer;
- import java.util.TimerTask;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- Timer timer;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 定义UI组件
- final TextView tv1 = (TextView) findViewById(R.id.textView1);
- Button b1 = (Button) findViewById(R.id.button1);
- Log.i("yao", Thread.currentThread().getName());
- // 定义Handler
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- //handler处理消息
- if(msg.what>0){
- tv1.setText("" + msg.what);
- }else{
- //在handler里可以更改UI组件
- 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;
- // TimerTask 是个抽象类,实现的是Runable类
- @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控制还是要用Handler的,等等。弱弱的问一句,那些悄悄定时发短信的垃圾程序是用啥技术实现的呢?
本文发布:Android开发网
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。