AndroidTimer使用(二)

Android Timer计时器,实际上Timer和TimerTask都是JDK自带的功能,两个类结合可以实现定时任务执行一次,或者定期重复执行任务。

这个例子实现的模拟发射火箭……

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);
                        }
                });

        }

}

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

1.png
2.png

 在Android里进行时间调度还是有方法的,在Android里进行UI控制还是要用Handler的。

原文地址:https://www.cnblogs.com/xuewater/p/2594659.html