Android中常用计时器,延时,定时
一、三种常用的定时器
1.Handler类的postDelayed方法:
Handler mHandler = new Handler();Runnable r = new Runnable() {@Overridepublic void run() {//do something//每隔1s循环执行run方法mHandler.postDelayed(this, 1000);}};主线程中调用: mHandler.postDelayed(r, 100);//延时100毫秒
2.用handler+timer+timeTask方法:
Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 1){//do something}super.handleMessage(msg);}};Timer timer = new Timer();TimerTask timerTask = new TimerTask() {@Overridepublic void run() {Message message = new Message();message.what = 1;handler.sendMessage(message);}};主线程中调用:timer.schedule(timerTask,1000,500);//延时1s,每隔500毫秒执行一次run方法
3.Thread+handler方法:
Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 1){//do something}super.handleMessage(msg);}};class MyThread extends Thread {//这里也可用Runnable接口实现@Overridepublic void run() {while (true){try {Thread.sleep(1000);//每隔1s执行一次Message msg = new Message();msg.what = 1;handler.sendMessage(msg);} catch (InterruptedException e) {e.printStackTrace();}}}}
主线程中调用:new Thread(new MyThread()).start();
二、三种延时的方法:
1.Handler的postDelayed方法:
new Handler().postDelayed(new Runnable() {@Overridepublic void run() {//do something}}, 1000); //延时1s执行
2.timer + TimerTask方法:
timer = new Timer();timer.schedule(new TimerTask() { @Overridepublic void run() {//do something}},1000);//延时1s执行
3.Thread方法:
new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(1000);//延时1s//do something} catch (InterruptedException e) {e.printStackTrace();}}}).start();
三、三种定时器:
1.Timer + TimerTask方法
String sdate = "2019-01-01";SimpleDateFormat sf = new SimpleDateFormat("yy-MM-dd");Date date = sf.parse(sdate);Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("系统正在运行……");}}, date); //在指定的日期运行一次定时任务/*如果date日期在今天之前,则启动定时器后,立即运行一次定时任务run方法*//*如果date日期在今天之后,则启动定时器后,会在指定的将来日期运行一次任务run方法*/
2.Timer+TimerTask方法
String sdate = "2018-02-10";SimpleDateFormat sf = new SimpleDateFormat("yy-MM-dd");Date date = sf.parse(sdate);Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("正在运行……");}}, date, 2000);/*如果指定的date时间是当天或者今天之前,启动定时器后会立即每隔2s运行一次定时器任务*//*如果指定的date时间是未来的某天,启动定时器后会在未来的那天开始,每隔2s执行一次定时器任务*/
四、停止定时器:
停止定时器实质是终止Timer的线程。默认情况下,创建的Timer线程会一直执行,如果要停止的话主要有以下四种方法终止Timer线程:
调用Timer的cancel方法;
把Timer线程设置成Daemon守护线程,当所有的用户线程结束后,那么守护线程也会被终止;
当所有的任务执行结束后,删除对应Timer对象的引用,线程也会被终止;
调用System.exit方法终止程序
1.cancel方法终止Timer线程
/*如果主线程不休眠一段时间,就执行了cancel方法,那么定时器还没来得及执行就会被关闭*/Thread.sleep(5000);timer.cancel();
五、启动定时器源码:
启动一个定时器实质是启动一个线程,每创建一个定时器,就需要新建一个线程,用新创建的线程去执行定时器任务。
当执行Timer timer = new Timer();
时,
执行了Timer的无参构造器
public Timer() {this("Timer-" + serialNumber());}
Timer的有参构造器.(设置线程的名字,然后启动线程)
public Timer(String name) {thread.setName(name);thread.start();}
Android中常用计时器,延时,定时相关推荐
- android中常用的快捷键
2019独角兽企业重金招聘Python工程师标准>>> android中常用的快捷键 Eclipse快捷键-方便查找,呵呵,记性不好 行注释/销注释 Ctrl+/ 块注释/销注释/ ...
- java中链式调用_Java及Android中常用链式调用写法简单示例
本文实例讲述了Java及Android中常用链式调用写法.分享给大家供大家参考,具体如下: 最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形 ...
- java调用android_Java及Android中常用链式调用写法简单示例
本文实例讲述了Java及Android中常用链式调用写法.分享给大家供大家参考,具体如下: 最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形 ...
- Android中常用的加密方式
Android中常用的加密方式 HmacSHA1 public static String getSignUtil(String key ,String base) {Log.i(TAG, " ...
- Android中常用的设计模式
一:参考文档 先介绍参考文档(或许我们更容易明白):另记录本人可参考 QQ15 MobileSafe 两个Demo 有哪些在实际 Android 项目中用到的设计模式? Android开发中常见的设计 ...
- java安卓计时器_如何在android中设置计时器
通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...
- 【Android 逆向】Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )
文章目录 一.拷贝并分析 Android 中的 /system/lib/libc.so 动态库 二.拷贝并分析 Android 中的 /system/lib/libc++.so 动态库 三.拷贝并分析 ...
- Android中常用的设计模式一
对于开发来说,设计模式是必不可少的,就像是一个项目的架海紫金梁,而且熟悉常用的设计模式可以有助于我们研读源码.好,废话不多说,开始介绍 1> 单例: 不想再说了,如果还有人不会,我叫他大爷. 大 ...
- Android中常用的几种字体单位
有必要弄清楚Android中我们常用的几种字体单位: 1.px(象素):屏幕实际的象素,常说的分辨率1024×768pixels,就是横向1024px,纵向768px:不同设备显示效果相同: 2.in ...
- 进阶篇-用户界面:4.Android中常用组件
1.下拉菜单 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一 ...
最新文章
- HBase保存的各个字段意义解释
- 搭建ngrok服务器之扩展
- python 完全面向对象_python 面向对象(一)
- [css] 举例说明常用的cursor取值有哪些?
- Telnet 1433端口
- idea中查看maven依赖树
- Javascript如何深拷贝对象
- Unity3D 保姆级安装教程与收费方案和版本、下载地址,看不会算我输
- 【转贴】从亚马逊公司的发展看电子商务
- swing添加按钮监听后,面板监听失效
- 2006 IBM SOA主题会开始座席预定工作
- coredns hosts插件
- Python爬取京东商品数据
- 联通物联卡 显示“已停用”
- 一起学英语第三期,things change,people change
- Matlab中sym无法使用
- linux下修改ext3硬盘为nst,Linux系统备份与恢复
- LMS原理推导及代码实现
- Linux 环境基础开发工具的使用
- 基于Preevision的面向服务架构SOA和以太网通信设计方法
热门文章
- 有关access的上机试题_2016年计算机二级《Access》上机操作题及答案
- supervisor备忘
- iOS网络协议_HTTP/TCP/IP浅析
- 【从零开始学习Go语言】一.初识Go语言
- autocad ios 虚线_教大家AutoCAD2020怎么画虚线的方法
- 华氏温度和摄氏温度的转换-C语言
- 【长安的荔枝】读书摘记
- LookAhead优化器方法
- python调整excel列宽_python - 有没有一种方法可以使用pandas.ExcelWriter自动调整Excel列的宽度? - 堆栈内存溢出...
- [大话技术]话聊有趣的23种设计模式