Android Timer schedule

timer.schedule(new MyTask(),long time1,long timer2);

今天算是彻底的搞懂了这个以前让我为之头疼的方法。

以下我就重点介绍一下:

第一个參数。是 TimerTask 类,在包:import java.util.TimerTask .使用者要继承该类,并实现 public void run() 方法,由于 TimerTask 类 实现了 Runnable 接口。

第二个參数的意思是,当你调用该方法后。该方法必定会调用 TimerTask 类 TimerTask 类 中的 run() 方法,这个參数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule() 方法后,要等待这么长的时间才干够第一次运行 run() 方法。

第三个參数的意思就是,第一次调用之后。从第二次開始每隔多长的时间调用一次 run() 方法。

[附:]

  技术人员在实现内部办公系统与外部站点一体化的时候,最重要的步骤就是从OA系统读取数据,而且依据站点模板生成终于的静态页面。

这里就须要一个定时任务,循环的运行。

  技术人员在写定时任务的时候,想当然的以为Timer.schedule(TimerTask task, long delay)就是反复的执行task。

程序执行后发现仅仅执行了一次,总认为是task里的代码有问题,花了非常长时间调试代码都没有结果。

  细致研读java api,发现:

  schedule(TimerTask task, long delay)的凝视:Schedules the specified task for execution after the specified delay。大意是在延时delay毫秒后运行task。并没有提到反复运行

  schedule(TimerTask task, long delay, long period)的凝视:Schedules the specified task for repeated fixed-delay execution, beginning after the specified delay。大意是在延时delay毫秒后反复的运行task,周期是period毫秒。

  这样问题就非常明白schedule(TimerTask task, long delay)仅仅运行一次。schedule(TimerTask task, long delay, long period)才是反复的运行。

关键的问题在于程序猿误以为schedule就是反复的运行,而没有细致的研究API,一方面也是英文能力不够,浏览API的过程中不能非常快的理解到含义。

时间: 2024-07-29 18:42:17

Android Timer schedule的相关文章

Android Timer 的 schedule()方法定时循环切换图片

void java.util.Timer.schedule(TimerTask task, long delay, long period)第一个参数,是 TimerTask 类,在包:import java.util.TimerTask .使用者要继承该类,并实现public void run() 方法,因为 TimerTask 类 实现了 Runnable 接口.第二个参数的意思是,用户调用 schedule() 方法后,要等待这么长的时间才可以第一次执行run() 方法.第三个参数的意思就

android timer的schedule和scheduleAtFixedRate运用

在java中,Timer类主要用于定时性.周期性任务的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 java代码如下: [java] view plaincopy SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date startDate = dateFormatter.parse("2

Android Timer用法

Android考虑到线程安全问题,不允许在线程中执行UI线程,在Android中,有一个类:android.os.Handler,这个可以实现各处线程间的消息传递.先看段代码,这个实例化了一个Handler,Handler可以通过Message在多个线程通讯,这里做的是定时recLen加1,然后以一定的格式,显示到recTime上(UI线程上的操作).  1 final Handler handler = new Handler(){   2     public void handleMess

android Timer TimerTask用法笔记

Android中经常会遇到执行一些周期性定时执行的任务.初学的时候经常会使用Thread.sleep()方法.在android中,有Timer可以专门干这个事情. 先看看Timer.class中都是些什么. 看到前几行代码的时候就应该知道了.... Timer中有个静态内部类:TimerImpl TimerImpl有个静态内部类:TimerHeap TimerImpe继承Thread,用来实现具体的任务执行内容. TimerHeap定义了一个TimerTask的数组,用来管理多个TimerTas

执行循环任务new Timer().schedule(new TimerTask(){},0,1000);

package com.pingyijinren.test; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private int i

Android Timer(计时器)

public class MainActivity extends Activity { Timer timer = new Timer(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button1).setOnClickListener(l); }

Android Timer与TimerTask

一.概览 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次.    TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 二.Timer与TimerTask的相关操作 通过Timer与TimerTask相结合实现的定时器功能.具体实现过程如下: 第一步,得到Timer的实例化对象 Timer timer= new Timer() ; 第二步,实例化TimerTask对象 TimerTask timerTask = new 

timer.scheduleAtFixedRate和timer.schedule的实验

基础代码: Calendar  currentTime = Calendar.getInstance(); currentTime.setTime(new Date()); int  currentHour = currentTime.get(Calendar.SECOND); currentTime.set(Calendar.SECOND,  currentHour + 20);//第一(大于20秒):currentHour + 20:第二(小于20秒):currentHour - 20:第三

android Timer(定时器) Handler

final Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { // 如果该消息是本程序所发送的 if (msg.what == 0x1233) { // 动态地修改所显示的图片 show.setImageResource(imageIds[currentImageId++ % imageIds.length]); } } }; // 定义一个计时器,让该计时器周期性地执行指