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="点一下" />
就那么多,以后会补充更多的内容