zoukankan      html  css  js  c++  java
  • 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的过程中不能非常快的理解到含义。


  • 相关阅读:
    fiddler---Fiddler模拟接口数据(mock)
    Intellij IDEA gradle项目目录介绍
    Windows netstat 查看端口、进程占用
    SpringMVC和spring常见面试题总结
    mybatis一级缓存二级缓存
    Mybatis常见面试题总结
    Spring容器
    深入理解JVM类加载机制
    理解Spring框架中Bean的5个作用域
    编程语言的分类与关系
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5392897.html
Copyright © 2011-2022 走看看