android 定时器 循环器
//全局唯一计时器 节省资源
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 定时器 循环器相关推荐
- Android开发之实现每隔一段时间触发定时器android定时器
老套路看图: 每隔20秒重新触发 实际上实现也很简单我们可以通过android原生自带的定时器完成,说下思路: 1.首先实现android定时器开启触发 2.在定时器结束的方法中再次触发开启定时器即可 ...
- android 定时换图片,Android 定时器实现图片的变换
Android 定时器实现图片的变换 在Android中,要让每秒进行一次ui更新,就需要利用到定时器和handler,message的结合,如果不使用handler就不能达到更新ui的效果,我的理解 ...
- android实现10ms定时器,Android定时器不低于〜120ms分辨率
我一直试图通过TCP Socket连接将我的Android手机传感器数据发送到我的PC.我的目标是刷新10-40毫秒,我正在研究手机传感器在测量技术方面的潜在应用,这些测量技术包括将手机放在秋千上,并 ...
- Android 定时器+倒计时 仿淘宝秒杀
目录结构 效果图: imageViewHolder public class imageViewHolder extends RecyclerView.ViewHolder {public Image ...
- Android定时器Timer和TimerTas的使用
1. 概述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. Time ...
- android定时器取消,Android定时器崩溃取消
我有一个定时器运行,然后熄灭,并做了一些事情,定时器启动罚款.Android定时器崩溃取消 然后我想要做的是点击一个按钮,然后创建一个电子邮件.除了在计时器运行时单击该按钮之外,一切正常,应用程序崩溃 ...
- android studio 定时器,Android定时器和Handler用法实例分析
本文实例讲述了Android定时器和Handler用法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Android Studio 二.定时器使用示例: 初始化: //定 ...
- android 定时器重置,Android定时器延迟和重置
我确定在这里的某处有类似的问题,但我似乎无法找到它.Android定时器延迟和重置 这是我正在尝试做的. 假设我已连接到服务器,并且如果在过去5分钟内没有用户拨打任何电话,我想断开连接.但是,如果连一 ...
- android实现10ms定时器,本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:一、环境:主机:WIN8开发环境:Android Studio...
本文实例讲述了Android定时器和Handler用法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Android Studio 二.定时器使用示例: 初始化: //定 ...
最新文章
- CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
- 为什么人们默认 x86 代表 32 位处理器
- 商业项目中代码质量是否重要?
- 快学scala-第七章 包和引入
- Unicode 编码表下载
- eclipse中文版设置字体大小
- win11系统项目启动报java.lang.IllegalStateException: Unmapped relationship: 7错误的解决
- Unity | 动画那些事儿
- Dos窗口的打开方式及其常用命令
- Java 上传--upload
- 查看僵尸进程并杀掉僵尸进程
- srsLTE:高度模块化的 3GPP LTE 开源库
- 制作唐诗网页代码_唐诗宋词网页制作素材
- 跟熊浩学沟通30讲读后感_《跟熊浩学沟通30讲》之沟通的基本原则
- 高通语音专题---电话会议流程和日志分析
- IDEA安装插件提示was not installed: Cannot download解决办法
- 以实助实的京东物流,给实体经济带来了什么?
- 爬取《斗破苍穹》小说全文
- css怎么设置table表格的边框为单线边框?(代码详解)
- 机器人工程→生源的排位←
热门文章
- 从微软到微信,“对方正在输入…”功能 20 年前的起源
- 爬虫系列之百度云爬虫
- ACA云原生5消息队列MQ和PTS\ARM等工具
- 绿色邮件系统_论坛邮件群发_论坛邮件群发asp
- redis使用布隆过滤器
- WinForm 中 Control.SuspendLayout, Control.ResumeLayout, PerformLayout 之间的关系
- 第一笔区块链人民币信用证交易完成
- 微信小程序:字幕效果,实现文字从右向左无限滚动
- Spring MethodInvoker学习笔记
- springcloud家族路由系列之getway