Timer小记

来源:互联网 发布:dota2知乎 编辑:程序博客网 时间:2024/06/05 15:13

Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中有一个抽象方法run(),类型线程中的run()方法。我们使用Timer创建一个他的对象,然后使用这对象的schedule方法来完成这种间隔的操作。


schedule方法有三个参数,其中第一个参数就是TimerTask类型的对象,我们实现TimerTask的run()方法就是要周期执行的一个任务;第二个参数有两种类型,第一种是long类型,表示多长时间后开始执行,另一种是Date类型,表示从那个时间后开始执行;而第三个参数就是执行的周期,为long类型。

schedule方法还有一种两个参数的执行重载,第一个参数仍然是TimerTask,第二个表示为long的形式表示多长时间后执行一次,为Date就表示某个时间后执行一次。

//以下是几种调度task的方法:     
timer.schedule(task, time);  
// time为Date类型:在指定时间执行一次。  
     
timer.schedule(task, firstTime, period);  
// firstTime为Date类型,period为long  
// 从firstTime时刻开始,每隔period毫秒执行一次。  
     
timer.schedule(task, delay)  
// delay 为long类型:从现在起过delay毫秒执行一次  
     
timer.schedule(task, delay, period)  
// delay为long,period为long:从现在起过delay毫秒以后,每隔period  

// 毫秒执行一次。 


下面咱们看一个小例子。

1、首先在布局中写一个简单的Button,为他添加监听。当点击Button后,创建一个Timer对象,并使用Timer对象的schedule(task,delay)方法;定义一个内部类来发送handler。如下:



然后在handler中执行操作



下面是代码:

import android.os.Bundle;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import java.util.Timer;import java.util.TimerTask;public class MainActivity extends AppCompatActivity {    private Button but;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        but = (Button)findViewById(R.id.but);        but.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //首先写一个Timer                Timer timer = new Timer();                timer.schedule(new Timers(),2000);            }        });    }    //定义一个Timers类继承TimerTask   protected class Timers extends TimerTask {        @Override        public void run() {            //发送一条handler消息,            Message message = new Message();            message.what = 1;            handler.sendMessage(message);        }    }   android.os.Handler handler = new android.os.Handler(){       @Override       public void handleMessage(Message msg) {           switch (msg.what){               case 1:                   //在次执行操作                   Toast.makeText(MainActivity.this,"一种写法",Toast.LENGTH_SHORT).show();                   break;           }           super.handleMessage(msg);       }   };

布局很简单

<Button    android:id="@+id/but"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="点一下" />

就那么多,以后会补充更多的内容


0 0