计时器工具类

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;import androidx.annotation.NonNull;import java.util.Timer;
import java.util.TimerTask;/*** 用于计时,在主线程中使用此方法*/
public class ChjTimer {private int time;//设置倒计时 X 秒private int interval = 1000;//设置间隔时间private ChjTimerInter chjTimerInter; //回调private Timer timer; // 定时器private static final int WHAT_REFREH = 0;//刷新/*** 创建对象则开始计时** @param chjTimerInter 接口回调*/public ChjTimer(ChjTimerInter chjTimerInter) {this.chjTimerInter = chjTimerInter;}/*** 创建对象开始计时* @param interval      间隔时间通知(使用第一个方法,默认1秒钟刷新一次)* @param chjTimerInter 接口回调*/public ChjTimer(int interval, ChjTimerInter chjTimerInter) {this.chjTimerInter = chjTimerInter;this.interval = interval;}/*** 开始计时*/public void start(int time) {this.time = time;if (timer == null){timer = new Timer();} else {stop();return;}timer.schedule(new TimerTask() {@Overridepublic void run() {timesss.sendMessage(new Message());}}, interval);}/*** 终止计时*/public void stop() {if (timer != null) {timer.cancel();timer = null;}if (timesss != null) timesss.removeMessages(WHAT_REFREH);if (chjTimerInter != null)chjTimerInter.stop(time);}@SuppressLint("HandlerLeak")private Handler timesss = new Handler() {@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);if (msg.what != WHAT_REFREH) return;time -= 1;if (chjTimerInter != null) chjTimerInter.second(time);if (time == 0) {if (timer == null) return;timer.cancel();timer = null;if (chjTimerInter != null) chjTimerInter.expire();} else if (time > 0) {timer.schedule(new TimerTask() {@Overridepublic void run() {timesss.sendMessage(new Message());}}, interval);}}};/*** 接口*/public interface ChjTimerInter {/*** 间隔时间内回调*/void second(int time);/*** 完成回调*/void expire();/*** 终止计时*/void stop(int time);}}

 使用演示

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;public class MainActivity extends Activity implements View.OnClickListener, ChjTimer.ChjTimerInter {private TextView tiems,timnew;private ChjTimer chjTimer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tiems = findViewById(R.id.time);timnew = findViewById(R.id.timnew);findViewById(R.id.but).setOnClickListener(this);findViewById(R.id.buts).setOnClickListener(this);chjTimer = new ChjTimer(this);}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.but:tiems.setText("10");timnew.setText("正在计时");chjTimer.start(10);break;case R.id.buts:chjTimer.stop();break;}}@Overridepublic void second(int time) {tiems.setText(time + "");}@Overridepublic void expire() {timnew.setText("计时完成");}@Overridepublic void stop(int time) {timnew.setText("计时终止" + time);}
}

页面 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_gravity="center"android:gravity="center"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/timnew"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="计时完成"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/time"android:text="0"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/but"android:text="开始"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/buts"android:text="终止"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

演示效果

Android 计时器,定时功能相关推荐

  1. Android记事本定时功能,安卓手机上怎么使用日历记事本?

    原标题:安卓手机上怎么使用日历记事本? 相信每天合理的日程安排对不少忙碌的上班族来说是比较重要的,顾名思义,日程的意思是对一天或一周.一个月等某一时间节点或时间段的计划与安排.有不少网友都知道想要设置 ...

  2. Android备忘录定时功能,这个极简备忘录,让你 2 秒记录一个提醒事项 - Recall #Android...

    原标题:这个极简备忘录,让你 2 秒记录一个提醒事项 - Recall #Android 作者:梁晋豪 对于随时随地的轻度记录,我们的习惯往往是使用系统便签,或是印象笔记等笔记软件. 而在这几年里,备 ...

  3. android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)...

    ListViewTimer 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能) 项目中有时会遇到列表中含有倒计时或者是计时器的需求,实现的方式有很多种,此Demo中是使用Thread + ...

  4. android计时器正确写法,Android计时器正确应用方式解析

    昨天晚上在写一个Android计时器,开始认为很容易,用Java一般写法,结果发现计时器根本不能运行,但却不报任何错误,当时就呆在那了,不知道该怎么办了,后来在网上查了一下,Android考虑到线程安 ...

  5. Android 实现闹钟功能

      原文地址:Android 实现闹钟功能作者:Android_Learners 一.手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以 ...

  6. Android自定义定时闹钟开发详解

    这篇文章主要为大家详细介绍了Android自定义定时闹钟开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Android开发之自定义闹钟实现,供大 ...

  7. 高通平台 android 12 定时开关机

    高通平台 android 12 定时开关机 关机 关机实现 开机实现 总结 关机 AlarmManager取消了RTC_POWEROFF_WAKEUP 不支持通过AlarmManager设置关机唤醒设 ...

  8. 基于Android的多功能日程表,基于android的多功能日程表系统的设计与实现.doc

    最新精品文档,知识共享! 烟台大学毕业论文(设计)任务书 院(系):计算机与控制工程学院 姓名 于文英 学号 201158504444 毕业届别 2015 专业 软件工程 毕业论文(设计)题目 基于A ...

  9. Android Studio多功能闹钟[android源码]

    Android Studio多功能闹钟[android源码] 多功能闹钟App 简 介 主 要 技 术 界面截图 主要代码 源码链接 作者信息 多功能闹钟App 简 介 此多功能闹钟界面采用TabHo ...

  10. Android创意——多功能智能播放器

    [color=green][align=center][size=medium][url=http://www.google.com/intl/zh-CN/daxue/blog2010/]首届 Goo ...

最新文章

  1. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
  2. python多久更新一次_Python Tkinter,每秒钟更新一次
  3. C++代码片段(四)萃取模板类的模板参数类型
  4. kafka 出现Java heap space的解决方法
  5. MCSDK HUA Demonstration Guide
  6. LeetCode 2157. 字符串分组(状态压缩+位运算+图的遍历)
  7. 有线电视网(洛谷-P1273)
  8. 极简主义shiny app
  9. 11月全球搜索引擎市场:百度份额突破30% 增势持续
  10. Python3-笔记-E-012-库-JSON
  11. pip在多个python版本中将包安装到制定版本
  12. 解决mac屏幕不能共享问题
  13. python怎么输出变量加文字书名_python的交互模式怎么输出名文汉字
  14. Python 与量化分析
  15. 一枚芯片的赶考之路:究竟该如何看待“AI评测”?
  16. [线段树 标记永久化 单调队列] BZOJ 1171 大sz的游戏 BZOJ 2892 强袭作战
  17. 浅谈Object.assign
  18. SpringMVC超详细入门
  19. 网上销售平台--需求分析(二)
  20. vivox21支持html,vivo X21支持双卡吗_vivo X21支持双卡双待吗-太平洋IT百科手机版

热门文章

  1. 本科论文查重网站分享
  2. 一、Camunda工作流的学习路线(开局一把刀,学完后青铜变王者)
  3. android+农历月份大小压缩表,农历日期标注 (文华财经随身行Android   5.7.1(252))...
  4. “互联网造车”的误会
  5. 将pc端的网页自适应显示在移动端
  6. oracle 累除,怎么对每一行进行累乘和累除
  7. 信息系统项目管理师考点之错题知识汇总
  8. 2020年风口的创业项目,你想做那个?
  9. IDEA使用svn进行代码分支合并
  10. 【阿里技术沙龙】打造手机淘宝开放业务生态