老套路看图:

每隔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定时器相关推荐

  1. java每隔一段时间执行_8.Android中,每隔一段时间执行某一个任务(Timer)

    1,在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务.比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Timer和 TimerTask. Tim ...

  2. Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案

    Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 参考文章: (1)Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 (2)https://www.cn ...

  3. TLS 改变密码标准协议(Change Cipher Spec Protocol) 就是加密传输中每隔一段时间必须改变其加解密参数的协议...

    SSL修改密文协议的设计目的是为了保障SSL传输过程的安全性,因为SSL协议要求客户端或服务器端每隔一段时间必须改变其加解密参数.当某一方要改变其加解密参数时,就发送一个简单的消息通知对方下一个要传送 ...

  4. JAVA 编写程序实现如下功能:一个线程进行如下运算1*2+2*3+3*4+……+19*20,而另一个线程则每隔一段时间读取前一个线程的运算结果。

    编写程序实现如下功能:一个线程进行如下运算12+23+34+--+1920,而另一个线程则每隔一段时间读取前一个线程的运算结果. class Count{private int sum;Count(i ...

  5. centos网络隔一段时间就断_“路由器隔一段时间就上不了网,断一下电又能用了,这是什么原因...

    有人留言问:"路由器隔一段时间就上不了网,断一下电又能用了,这是什么原因?"具体原因具体分析,下面和北京宽带通一起来看下这三种情况. 1.隔几十分钟就断网,有时候甚至隔几分钟就断一 ...

  6. 总结以下三种方法,实现c#每隔一段时间执行代码:

    总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用Sys ...

  7. python可以实现的功能_Python 实现某个功能每隔一段时间被执行一次的功能方法...

    本人在做项目的时候遇到一个问题: 某个函数需要在每个小时的 3 分钟时候被执行一次,我希望我 15:45 启动程序,过了18 分钟在 16:03 这个函数被执行一次,下一次过 60 分钟在 17:03 ...

  8. JS每隔一段时间执行一个方法

    function funcTest(){ //每隔3秒执行一次timelyFun方法 window.setInterval("timelyFun()",3000); } windo ...

  9. 每隔一段时间自动执行一次某个方法(使用线程)[C#]

    c#里,怎么让一个方法事件每隔一段时间自动执行一次?能用线程来实现吗?怎么实现? 比如:SendToService这个方法,要每隔10秒钟自动执行一次. 下面是我总结的方法: //定义线程 Threa ...

最新文章

  1. UPDATE STATISTICS 有何妙用?
  2. Channel的几种状态
  3. Android Studio——怎么设置代码补全以及提示(详细)?
  4. textaligncenter仍然不居中_戊唑醇和己唑醇都是杀菌剂,有啥不同?真正懂的人不多...
  5. java父类子类顺序_java父类子类內部程序的执行顺序
  6. 使用模拟的单元测试–测试技术5
  7. 资深架构专家聊架构之道:灵活、稳定、高可用15点精要
  8. android+geturl+方法,浅入浅出Android(014):HTTP GET获取文本内容
  9. python里的pip有什么用_python的pip有什么用
  10. 第一个简单APP设计图
  11. 威纶触摸屏与电脑连接_威纶通TK6070IP触摸屏下载线MT6071IE触摸屏编程线连接电脑USB线...
  12. 在没有原始数据的情况下, 我把列线图转换成了网页计算器
  13. 构建一套完整高效的供应链系统体系
  14. CentOS 识别NTFS格式U盘
  15. 截取含有中文、Emoji表情、特殊符号的字符串
  16. 智能算法系列之粒子群优化算法
  17. 如何把一张图片分割成几张
  18. 2021年安全员-B证考试题及安全员-B证报名考试
  19. 计算机一级考试操作题未来教育,2019年计算机一级考试MS Office操作试题002
  20. 工业物联网 凌顶发布注塑机通讯协议Euromap 63 的 OPCUA 驱动组件

热门文章

  1. goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...
  2. lstm代码_只需5行代码!LSTM时间序列建模以及预测
  3. share with用法
  4. 为什么企业需要IT资产管理
  5. ubuntu安装QT4的方法
  6. Python_str 的内部功能介绍
  7. 20165221 实验五 网络编程与安全
  8. 快速排序算法 java 实现
  9. WPF利用动画实现圆形进度条
  10. JavaScript学习05 定时器