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的过程中不能非常快的理解到含义。
Android Timer schedule的更多相关文章
- Android Timer 的 schedule()方法定时循环切换图片
void java.util.Timer.schedule(TimerTask task, long delay, long period)第一个参数,是 TimerTask 类,在包:import ...
- Android定时器Timer.schedule
Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次.TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. schedule的意思 ...
- android Timer and TImerTask
android Timer and TImerTask Caused by: java.lang.IllegalStateException: TimerTask is scheduled alrea ...
- Android Timer用法
Android考虑到线程安全问题,不允许在线程中执行UI线程,在Android中,有一个类:android.os.Handler,这个可以实现各处线程间的消息传递.先看段代码,这个实例化了一个Hand ...
- Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》
之前本专栏文章中的小案例有写到:第三十九话<Chronometer实现倒计时> 以及使用异步实现倒计时:第三十三话< AsyncTask异步倒计时> 本篇文章 结合Timer. ...
- Android Timer的应用示例
package com.hyzhou.timerdemo1; import java.util.Timer; import java.util.TimerTask; import android.os ...
- android Timer TimerTask用法笔记
Android中经常会遇到执行一些周期性定时执行的任务.初学的时候经常会使用Thread.sleep()方法.在android中,有Timer可以专门干这个事情. 先看看Timer.class中都是些 ...
- 执行循环任务new Timer().schedule(new TimerTask(){},0,1000);
package com.pingyijinren.test; import android.support.v7.app.AppCompatActivity; import android.os.Bu ...
- android Timer使用方法
Timer属性:http://www.apihome.cn/api/java/Timer.html 声明创建: private Timer mTimer; protected void onCreat ...
随机推荐
- day16作业
一.填空题 1.Integer Character 2.String s = "123";Integer i = new Integer(s);System.out.println ...
- 洛谷P2613有理数取余
传送门 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...
- DRF分阶段序列化细化实例
DRF是分两阶段进行的. 如果是API接收数据,则是先进行Parser,将外界接收的bytes数据分析成python数据类型,其间涉及encoding操作,再进行序列化,将python数据类型保存进数 ...
- Linux系统运维笔记(四),CentOS 6.4安装 MongoDB
Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...
- Windows下SVN服务器搭建方法整理(apache)
http://skydream.iteye.com/blog/437959 http://www.cnblogs.com/liuke209/archive/2009/09/23/1572858.htm ...
- 搭建项目vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize
vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize https://www.cnblogs.com/wuguanglin ...
- Eclipse添加SVN插件:导入项目+上传项目+更新项目
首先在Eclipse中安装SVN插件,方法同安装Pydev相同 首先点击help,然后点击Install New Software 然后在弹出的窗口中点击Add,再在新弹出的窗口中的url栏输入如下内 ...
- 001.WordPress建站部署
一 WordPress简介 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统( ...
- springmvc springJDBC 简单实训银行账户管理系统
springmvc springJDBC 简单实训银行账户管理系统 1.简单介绍一下,在校时每周结束都会有一次学习总结,简称“实训”,这次实训内容是spring,因为是最近热门框架,我就先从基础方面开 ...
- FreeMarker快速入门
虽然当前比较推荐使用thymeleaf替代jsp作为java网页开发的模板语言,不过公司推荐使用freemarker,那就顺势而为,速度学一发,然后迅速开始新项目了. 简介 FreeMarker第一个 ...