前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android使用Handler实现定时器与倒计时器功能

Android使用Handler实现定时器与倒计时器功能

作者头像
砸漏
发布2020-11-03 21:23:21
9130
发布2020-11-03 21:23:21
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

什么是Handler

Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制。Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI。Handler的作用主要有两个:一是发送消息;二是处理消息,它的运作需要底层Looper和MessageQueue的支撑。MessageQueue即消息队列,它的底层用单链表实现;Looper则负责在一个循环中不断从MessageQueue中取消息,若取到了就交由Handler进行处理,否则便一直等待。关于Looper需要注意的一点是除了主线程之外的其他线程中默认是不存在Looper的。主线程中之所以存在,是因为在ActivityThread被创建时会完成初始化Looper的工作。

特性

支持操作 :

start pause resume cancel

使用

代码语言:javascript
复制
allprojects {
 repositories {
 ...
 maven { url 'https://jitpack.io' }
 }
}
dependencies {
 ...
 compile 'com.github.xesam:AndroidTimer:v0.1'
}

TODO

add ticker sequence

使用

CountTimer

代码语言:javascript
复制
 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

代码语言:javascript
复制
 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 同时管理多个定时任务

创建多个任务:

代码语言:javascript
复制
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();

取消任务:

代码语言:javascript
复制
 multiCountTimer.cancel(2);
 或者
 multiCountTimer.cancelAll();

截图:

总结

以上所述是小编给大家介绍的Android使用Handler实现定时器与倒计时器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档