Android开发之实现每隔一段时间触发定时器android定时器
老套路看图:
每隔20秒重新触发
实际上实现也很简单我们可以通过android原生自带的定时器完成,说下思路:
1.首先实现android定时器开启触发
2.在定时器结束的方法中再次触发开启定时器即可
package com.wyze.mercury.common.utils;import android.os.CountDownTimer;import com.wyze.mercury.common.TimerListener;
import com.wyze.platformkit.utils.log.WpkLogUtil;/*** @author : xiayiye5* @date : 2021/1/8 18:10* 类描述 : Android定时器每隔一段时间刷新灯的状态*/
public class CountDownTimerUtils {private CountDownTimer countDownTimer;private CountDownTimerUtils() {}public static CountDownTimerUtils getInstance() {return Single.COUNT_DOWN_TIMER_UTILS;}public CountDownTimerUtils setTime(final TimerListener timerListener) {if (null == countDownTimer) {countDownTimer = new CountDownTimer(20 * 1000L, 1000) {@Overridepublic void onTick(long l) {WpkLogUtil.e("定时器", l / 1000 + "");}@Overridepublic void onFinish() {WpkLogUtil.e("定时器", Thread.currentThread().getName());//执行获取灯的状态timerListener.timeFinish();//继续定时countDownTimer.start();}};}return this;}private static final class Single {private static final CountDownTimerUtils COUNT_DOWN_TIMER_UTILS = new CountDownTimerUtils();}/*** 开始定时*/public void startTime() {if (null != countDownTimer) {countDownTimer.start();}}/*** 取消定时*/public void cancelTime() {if (null != countDownTimer) {countDownTimer.cancel();//切记置空countDownTimer = null;}}
}
注意:一定要做好生命周期的管理如下,个人建议开启定时器方法放到onStart生命周期中调用
@Overrideprotected void onStart() {super.onStart();CountDownTimerUtils.getInstance().setTime(new TimerListener() {@Overridepublic void timeFinish() {//每隔一段时间刷新灯的状态getIotProp();}}).startTime();}@Overrideprotected void onDestroy() {super.onDestroy();//销毁的时候一定要取消定时器避免内存泄漏CountDownTimerUtils.getInstance().cancelTime();}@Overrideprotected void onPause() {super.onPause();CountDownTimerUtils.getInstance().cancelTime();}
在看下回调接口
package com.wyze.mercury.listener;/*** @author : xiayiye5* @date : 2021/1/8 15:17* 类描述 :*/
public interface TimerListener {/*** 定时完成*/void timeFinish();
}
Android开发之实现每隔一段时间触发定时器android定时器相关推荐
- java每隔一段时间执行_8.Android中,每隔一段时间执行某一个任务(Timer)
1,在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务.比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Timer和 TimerTask. Tim ...
- Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案
Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 参考文章: (1)Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 (2)https://www.cn ...
- TLS 改变密码标准协议(Change Cipher Spec Protocol) 就是加密传输中每隔一段时间必须改变其加解密参数的协议...
SSL修改密文协议的设计目的是为了保障SSL传输过程的安全性,因为SSL协议要求客户端或服务器端每隔一段时间必须改变其加解密参数.当某一方要改变其加解密参数时,就发送一个简单的消息通知对方下一个要传送 ...
- JAVA 编写程序实现如下功能:一个线程进行如下运算1*2+2*3+3*4+……+19*20,而另一个线程则每隔一段时间读取前一个线程的运算结果。
编写程序实现如下功能:一个线程进行如下运算12+23+34+--+1920,而另一个线程则每隔一段时间读取前一个线程的运算结果. class Count{private int sum;Count(i ...
- centos网络隔一段时间就断_“路由器隔一段时间就上不了网,断一下电又能用了,这是什么原因...
有人留言问:"路由器隔一段时间就上不了网,断一下电又能用了,这是什么原因?"具体原因具体分析,下面和北京宽带通一起来看下这三种情况. 1.隔几十分钟就断网,有时候甚至隔几分钟就断一 ...
- 总结以下三种方法,实现c#每隔一段时间执行代码:
总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用Sys ...
- python可以实现的功能_Python 实现某个功能每隔一段时间被执行一次的功能方法...
本人在做项目的时候遇到一个问题: 某个函数需要在每个小时的 3 分钟时候被执行一次,我希望我 15:45 启动程序,过了18 分钟在 16:03 这个函数被执行一次,下一次过 60 分钟在 17:03 ...
- JS每隔一段时间执行一个方法
function funcTest(){ //每隔3秒执行一次timelyFun方法 window.setInterval("timelyFun()",3000); } windo ...
- 每隔一段时间自动执行一次某个方法(使用线程)[C#]
c#里,怎么让一个方法事件每隔一段时间自动执行一次?能用线程来实现吗?怎么实现? 比如:SendToService这个方法,要每隔10秒钟自动执行一次. 下面是我总结的方法: //定义线程 Threa ...
最新文章
- UPDATE STATISTICS 有何妙用?
- Channel的几种状态
- Android Studio——怎么设置代码补全以及提示(详细)?
- textaligncenter仍然不居中_戊唑醇和己唑醇都是杀菌剂,有啥不同?真正懂的人不多...
- java父类子类顺序_java父类子类內部程序的执行顺序
- 使用模拟的单元测试–测试技术5
- 资深架构专家聊架构之道:灵活、稳定、高可用15点精要
- android+geturl+方法,浅入浅出Android(014):HTTP GET获取文本内容
- python里的pip有什么用_python的pip有什么用
- 第一个简单APP设计图
- 威纶触摸屏与电脑连接_威纶通TK6070IP触摸屏下载线MT6071IE触摸屏编程线连接电脑USB线...
- 在没有原始数据的情况下, 我把列线图转换成了网页计算器
- 构建一套完整高效的供应链系统体系
- CentOS 识别NTFS格式U盘
- 截取含有中文、Emoji表情、特殊符号的字符串
- 智能算法系列之粒子群优化算法
- 如何把一张图片分割成几张
- 2021年安全员-B证考试题及安全员-B证报名考试
- 计算机一级考试操作题未来教育,2019年计算机一级考试MS Office操作试题002
- 工业物联网 凌顶发布注塑机通讯协议Euromap 63 的 OPCUA 驱动组件