Android使用Handler实现定时器与倒计时器功能
作者:莫非有道 发布时间:2022-03-30 09:06:57
标签:android,handler,定时器,倒计时
什么是Handler
Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用单链表实现;Looper则负责在一个循环中不断从MessageQueue中取消息,若取到了就交由Handler进行处理,否则便一直等待。关于Looper需要注意的一点是除了主线程之外的其他线程中默认是不存在Looper的。主线程中之所以存在,是因为在ActivityThread被创建时会完成初始化Looper的工作。
特性
支持操作 :
start
pause
resume
cancel
使用
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
...
compile 'com.github.xesam:AndroidTimer:v0.1'
}
TODO
add ticker sequence
使用
CountTimer
new CountTimer(100) {
@Override
public void onTick(long millisFly) { // millisFly is the Elapsed time at *Running State*
vCountSwitcher.setText((millisFly) + "");
Log.d("onTick", millisFly + "");
}
};
CountDownTimer
new CountDownTimer(10_000, 100) {
@Override
public void onTick(long millisUntilFinished) { // millisUntilFinished is the left time at *Running State*
Log.d("onTick", millisFly + "");
}
@Override
public void onCancel(long millisUntilFinished) {
}
@Override
public void onPause(long millisUntilFinished) {
}
@Override
public void onResume(long millisUntilFinished) {
}
@Override
public void onFinish() {
}
};
使用一个 Handler 同时管理多个定时任务
创建多个任务:
MultiCountTimer multiCountTimer = new MultiCountTimer(100);
multiCountTimer.add(new CounterTimerTask(1) {
@Override
public void onTick(long millisFly) {
vMulti1.setText("multi_1:" + millisFly);
}
}).registerTask(new CounterTimerTask(2, 100) {
@Override
public void onTick(long millisFly) {
vMulti2.setText("multi_2:" + millisFly);
}
}).registerTask(new CounterTimerTask(3, 1000) {
@Override
public void onTick(long millisFly) {
vMulti3.setText("multi_3:" + millisFly);
}
});
multiCountTimer.startAll();
取消任务:
multiCountTimer.cancel(2);
或者
multiCountTimer.cancelAll();
截图:
总结
以上所述是小编给大家介绍的Android使用Handler实现定时器与倒计时器功能网站的支持!
来源:https://yq.aliyun.com/articles/493839?utm_content=m_42603


猜你喜欢
- 项目比较大有时候会比较卡,虽然有GC自动清理机制,但是还是有不尽人意的地方。所以尝试在项目启动文件中,手动写了一个定时器,定时清理内存,加快
- 1.在java代码中(SplashActivity继承AppCompatActivity时无效)2.在manifest.xml中改Theme
- 前言在上一篇中,我们介绍了使用位运算实现加法和减法运算,接下来本文主要介绍如何用位运算实现乘法运算,在实现乘法时要用位运算实现,并且不能出现
- Object(四大方法):文章干货满满,耐性看完~~何为Object?首先先来看看官方对Object的介绍:在这里附上Java官方的查阅工具
- 本文实例讲述了Android开发之文件操作。分享给大家供大家参考,具体如下:目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设
- 前言将采用slf+log4j2方式进行打印日志,以下用两种方式,一种基于maven的springboot2,一种jdk6,普通jar包的sp
- java字段值为null,不返回该字段类上打注解@JsonSerialize(include = JsonSerialize.Inclusi
- 本文介绍了AndroidStudio3.0开发调试安卓NDK的C++代码,分享给大家,具有如下:一、新建项目新建项目,没有发现Include
- RecyclerView 滑动时的优化处理,在滑动时停止加载图片,在滑动停止时开始加载图片,这里用了Glide.pause 和Glide.r
- Google在Android 4.4版本加入了半透明的界面样式,在Android 5.0的时候推出了Material Design的概念。这
- mybatis介绍 * 的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截
- 1、maven打包Spring Boot项目的pom.xml文件中默认使用spring-boot-maven-plugin插件进行打包:&l
- Q:使用过滤器、 * 与切片实现每个请求耗时的统计,并比较三者的区别与联系过滤器Filter 过滤器概念Filter是J2E中来的,可以看做
- 以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的
- 本文为大家分享了Android Studio3安装图文教程,供大家参考,具体内容如下Android Studio及其相关资源下载地址:dow
- <dependency> <groupId>org.projectlombok</g
- 为了实现不同环境构建的不同需求,这里使用到了 profile。因为 profile 能够在构建时修改 pom 的一个子集,或者添加额外的配置
- 我本地的springboot版本是2.5.1,后面的分析都是基于这个版本 <parent> &nbs
- PopupWindow是一个弹出式窗口,它可以展示任意View。他会浮在当前窗口的上方展示。下面看代码:public class MyAct
- Android标题栏最右边添加按钮的实例step1:重写activity的onCreateOptionsMenu方法@Override pu