//全局唯一计时器 节省资源
public class TimeUtils {private static TimeUtils timeUtils;ArrayList<WeakReference<OnTimeCallListent>> listents = new ArrayList<>();private TimeUtils() {mHandler.postDelayed(r, 1000);//延时1000毫秒}public static synchronized TimeUtils newInstance() {if (timeUtils == null) {timeUtils = new TimeUtils();}return timeUtils;}//向计时器注册回调 无需手动释放 当回调被销毁自动释放 需要注意回调生命周期 匿名回调会被系统直接回收public void setCallBack(OnTimeCallListent onTimeCallListent) {WeakReference<OnTimeCallListent> weakReference = new WeakReference<>(onTimeCallListent);listents.add(weakReference);}public interface OnTimeCallListent {public void onTime(long time);}final Handler mHandler = new Handler();Runnable r = new Runnable() {@Overridepublic void run() {ArrayList<WeakReference<OnTimeCallListent>> mList = new ArrayList<>();for (int i = 0; i < listents.size(); i++) {OnTimeCallListent listent = listents.get(i).get();if (listent != null) {mList.add(listents.get(i));try {listent.onTime(getLongTime() / 1000);}catch (Exception err){LogUtil.e("倒计时出现错误");}}}listents.clear();listents = mList;mHandler.postDelayed(this, 1000);}};public static Date getDate() {Date date = new Date(System.currentTimeMillis());return date;}public static long getLongTime() {long dateTime = getDate().getTime();return dateTime;}
}

使用时无需主动释放资源,采用弱引用持有回调对象,当回调对象被回收 主动释放不影响被持有对象生命周期,需注意 匿名回调会很容易被回收

使用方法 每隔一秒回调一次

TimeUtils.OnTimeCallListent onTimeCallListent = new TimeUtils.OnTimeCallListent() {@Overridepublic void onTime(long time) {//单位秒}}};TimeUtils.newInstance().setCallBack(onTimeCallListent);

android 定时器 循环器相关推荐

  1. Android开发之实现每隔一段时间触发定时器android定时器

    老套路看图: 每隔20秒重新触发 实际上实现也很简单我们可以通过android原生自带的定时器完成,说下思路: 1.首先实现android定时器开启触发 2.在定时器结束的方法中再次触发开启定时器即可 ...

  2. android 定时换图片,Android 定时器实现图片的变换

    Android 定时器实现图片的变换 在Android中,要让每秒进行一次ui更新,就需要利用到定时器和handler,message的结合,如果不使用handler就不能达到更新ui的效果,我的理解 ...

  3. android实现10ms定时器,Android定时器不低于〜120ms分辨率

    我一直试图通过TCP Socket连接将我的Android手机传感器数据发送到我的PC.我的目标是刷新10-40毫秒,我正在研究手机传感器在测量技术方面的潜在应用,这些测量技术包括将手机放在秋千上,并 ...

  4. Android 定时器+倒计时 仿淘宝秒杀

    目录结构 效果图: imageViewHolder public class imageViewHolder extends RecyclerView.ViewHolder {public Image ...

  5. Android定时器Timer和TimerTas的使用

    1. 概述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. Time ...

  6. android定时器取消,Android定时器崩溃取消

    我有一个定时器运行,然后熄灭,并做了一些事情,定时器启动罚款.Android定时器崩溃取消 然后我想要做的是点击一个按钮,然后创建一个电子邮件.除了在计时器运行时单击该按钮之外,一切正常,应用程序崩溃 ...

  7. android studio 定时器,Android定时器和Handler用法实例分析

    本文实例讲述了Android定时器和Handler用法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Android Studio 二.定时器使用示例: 初始化: //定 ...

  8. android 定时器重置,Android定时器延迟和重置

    我确定在这里的某处有类似的问题,但我似乎无法找到它.Android定时器延迟和重置 这是我正在尝试做的. 假设我已连接到服务器,并且如果在过去5分钟内没有用户拨打任何电话,我想断开连接.但是,如果连一 ...

  9. android实现10ms定时器,本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:一、环境:主机:WIN8开发环境:Android Studio...

    本文实例讲述了Android定时器和Handler用法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Android Studio 二.定时器使用示例: 初始化: //定 ...

最新文章

  1. CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
  2. 为什么人们默认 x86 代表 32 位处理器
  3. 商业项目中代码质量是否重要?
  4. 快学scala-第七章 包和引入
  5. Unicode 编码表下载
  6. eclipse中文版设置字体大小
  7. win11系统项目启动报java.lang.IllegalStateException: Unmapped relationship: 7错误的解决
  8. Unity | 动画那些事儿
  9. Dos窗口的打开方式及其常用命令
  10. Java 上传--upload
  11. 查看僵尸进程并杀掉僵尸进程
  12. srsLTE:高度模块化的 3GPP LTE 开源库
  13. 制作唐诗网页代码_唐诗宋词网页制作素材
  14. 跟熊浩学沟通30讲读后感_《跟熊浩学沟通30讲》之沟通的基本原则
  15. 高通语音专题---电话会议流程和日志分析
  16. IDEA安装插件提示was not installed: Cannot download解决办法
  17. 以实助实的京东物流,给实体经济带来了什么?
  18. 爬取《斗破苍穹》小说全文
  19. css怎么设置table表格的边框为单线边框?(代码详解)
  20. 机器人工程→生源的排位←

热门文章

  1. 从微软到微信,“对方正在输入…”功能 20 年前的起源
  2. 爬虫系列之百度云爬虫
  3. ACA云原生5消息队列MQ和PTS\ARM等工具
  4. 绿色邮件系统_论坛邮件群发_论坛邮件群发asp
  5. redis使用布隆过滤器
  6. WinForm 中 Control.SuspendLayout, Control.ResumeLayout, PerformLayout 之间的关系
  7. 第一笔区块链人民币信用证交易完成
  8. 微信小程序:字幕效果,实现文字从右向左无限滚动
  9. Spring MethodInvoker学习笔记
  10. springcloud家族路由系列之getway