Android创建定时器的一般方法

Android定时器

今天就来细数一下Android是如何创建定时器的,一般有五种常用方法。 请看下文。

一、利用Timer + TimerTask

就像它的名字一样,一看就知道可以用来做定时器。直接看代码:

1Timer timer = new Timer(); 2timer.schedule(new TimerTask() { 3 @Override 4 public void run() { 5 //todo what you want 6 } 7}, 0, 1000);

二、利用Handler + Runnable

代码举例:

1private Handler handler = new Handler(); 2private Runnable runnable = new Runnable() { 3 @Override 4 public void run() { 5 //todo what you want 6 handler.postDelayed(runnable, 1000); 7 } 8};

这样定义好后,是不会直接运行,需要在合适的地方调用一次如下代码:

1handler.postDelayed(runnable, 1000);//触发定时器

三、利用Thread

代码举例:

1 private class MyThread extends Thread { 2 public boolean stop = false; 3 public void run() { 4 while (!stop) { 5 //todo what you want 6 try { 7 Thread.sleep(1000); 8 } catch (InterruptedException e) { 9 e.printStackTrace(); 10 } 11 } 12 }; 13};

定好自己的定时线程类,然后启动:

1MyThread thread = new MyThread(); 2thread.start();

四、利用AlarmManager

AlarmManager是系统级闹钟服务,可以直接使用。

1//获取闹钟服务 2AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 3//todo what you want in the onCreate() of ClockActivity 4Intent intent = new Intent(MainActivity.this, ClockActivity.class); 5PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0); 6/* 7 *参数1表示闹钟类型,本例表示在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间; 8 *参数2表示定时器启动时间,本例是现在就开始; 9 *参数3表示定时器的触发间隔,本例是1秒钟; 10 *参数4表示定时器的行为,本例是启动系统服务在活动间跳转; 11 */ 12alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000, pi);

五、利用CountDownTimer(倒计时器)

就像它的名字一样,是跟咱们一般的定时器反着的。看代码:

1 //参数1:计时总时间,参数2:每次扣除时间数 2CountDownTimer cdt = new CountDownTimer(10000, 1000){ 3 @Override 4 public void onTick(long millisUntilFinished) 5 { 6 //todo what you want 7 } 8 9 @Override 10 public void onFinish() { 11 12 } 13}; 14cdt.start(); 15
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Android 设置系统闹铃和日历

一、创建定时器 设置权限<usespermissionandroid:name"com.android.alarm.permission.SET_ALARM"/案例https://developer.android.com/reference/android/provider/Alar