Timer小记

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值