由于要做暂停和恢复,这里我就没有使用Android的CountDownTimer,而是用了Java的Timer。所以,这个方法在java肯定是通用。我也外加了Android独有的Service,有些计时器需要在Activiy关闭的情况下依然在计时,回到Activity时,显示当前的计时状态。

Timer 这个Java的类,具体看Java的API说明,但是要注意一点:

Timer 在cancel后,需要重新new 一次。

首先要给计时器定义三个状态:准备,开始,暂停。

public static final int PREPARE = 0;

public static final int START = 1;

public static final int PASUSE = 2;

1.准备:没有开始计时,最初始状态;

2.开始:已经开始倒计时

3.暂停:已经开始倒计时,而且用户点击了暂停

开始、恢复倒计时,我定义了这个方法:

/**

* start count down

*/

private void startTimer(){

timer = new Timer();

timerTask = new MyTimerTask();

timer.scheduleAtFixedRate(timerTask, 0, timer_unit);

}

timer_unit 就是执行timer 任务的时间,我定义为1秒。MyTimerTask是我定义的一个倒计时计算方法,如下:

/**

* count down task

*/

private class MyTimerTask extends TimerTask{

@Override

public void run() {

timer_couting -=timer_unit;

if(timer_couting==0){

cancel();

initTimerStatus();

}

mHandler.sendEmptyMessage(1);

}

}timer_couting 是一个变量,记录当前倒计时还剩余多少时间,当剩余时间为0时,倒计时结束,所以cancel结束倒计时。每次倒计一秒通过handler发送到主线程来更新ui提示倒计时信息。

在界面上定义两个按钮,一个开始,一个停止,开始后可以暂停,暂停后可以恢复。

case R.id.btn_start:

switch (timerStatus){

case CountDownTimerUtil.PREPARE:

startTimer();

timerStatus = CountDownTimerUtil.START;

btnStart.setText("PAUSE");

break;

case CountDownTimerUtil.START:

timer.cancel();

timerStatus = CountDownTimerUtil.PASUSE;

btnStart.setText("RESUME");

break;

case CountDownTimerUtil.PASUSE:

startTimer();

timerStatus = CountDownTimerUtil.START;

btnStart.setText("PAUSE");

break;

}

break;

case R.id.btn_stop:

if(timer!=null){

timer.cancel();

initTimerStatus();

mHandler.sendEmptyMessage(1);

}

对于Android应用中需要用到关闭了Activity后依然在计时,在这里我们需要用Service,定义Service的情况跟上面类同,但是要注意的是这个计时Service是要单例模式,保证每次倒计时进来都是同一个倒计时。还需要定义一些方法来让Activity给这个Service传递操作命令,开始,暂停,恢复,停止。

/**

* start

*/

public void startCountDown(){

startTimer();

timerStatus = CountDownTimerUtil.START;

}

/**

* paust

*/

public void pauseCountDown(){

timer.cancel();

timerStatus = CountDownTimerUtil.PASUSE;

}

/**

* stop

*/

public void stopCountDown(){

if(timer!=null){

timer.cancel();

initTimerStatus();

mCountDownTimerListener.onChange();

}

}在Activity里面获取这个Service

countDownTimerService = CountDownTimerService.getInstance(new MyCountDownLisener()

,service_distination_total);

项目源码:

https://github.com/arjinmc/Android-CountDownTimer

java暂停计时器_Java/Android计时器(开始,暂停,恢复,停止)相关推荐

  1. java 停止定时器_Java/Android计时器(开始,暂停,恢复,停止)

    由于要做暂停和恢复,这里我就没有使用Android的CountDownTimer,而是用了Java的Timer.所以,这个方法在java肯定是通用.我也外加了Android独有的Service,有些计 ...

  2. JAVA计算器计时器_Java中计时器的使用

    Java中计时器的使用 import java.util.Timer; import java.util.TimerTask; public class TimerExample { /** * Ja ...

  3. java倒计时器_java – 使用计时器倒计时

    试图写一个计时器进行倒计时(如火箭发射:3-2-1-Go).我所拥有的似乎只执行一次.我需要它重复(几乎递归地)执行,直到值达到0. 正如您将看到的,我有各种println语句来跟踪这一进展.这是我的 ...

  4. 用java编写计时器_JAVA编写计时器

    1.0.0版本 实现功能:实现倒数功能 更新:无 import org.junit.Test; public class time { @Test public void timeTest() thr ...

  5. java webview框架_java - Android WebView 无法正常显示网页图表

    Android客户端中混搭HTML页面,会出现虽然HTML内容载入完成,标题也正常显示,但是整个网页需要等到近5秒(甚至更多)时间才会显示出来.研究了很久,搜遍了国外很多网站,也看过PhoneGap的 ...

  6. java 安卓权限_java – Android运行时权限 – 如何实现

    Android Developer Documentation给出了在运行时请求权限的示例: // Here, thisActivity is the current activity if (Con ...

  7. java屏幕锁定_Java android FCM,当应用程序最小化或屏幕锁定时我听不到声音和颤音...

    我使用FCM,当我的应用程序最小化或手机锁定时,我听不到声音和颤音.当某件事来自服务器时(当服务器向我的手机发送消息时),我会创建一个通知.当我的应用程序是在上面我听到一个声音和vibratteJav ...

  8. java 单元测试 异步_Java/Android编写异步的单元测试用例

    不写单元测试用例的程序员不是一个好CTO!!! 注:以下内容编码环境为AndroidStudio_2.4Preview6,测试框架 JUnit4.12 今天在研究 MVP_RxJava2_Retrof ...

  9. android java adb命令大全,Android adb命令备份恢复手机信息

    假设你已经在Windows下安装了Android SDK,并且更新到最新版 步骤: 1.通过USB连接你的设备,打开命令行 2.一般地,输入"adb devices"检测设备是否连 ...

最新文章

  1. python矩阵的平方_NumPy之计算两个矩阵的成对平方欧氏距离
  2. 解决 iOS 11 webview 顶部空白条的问题
  3. SAP Spartacus cxFocus增添了refresh Focus功能后的一些考虑
  4. OnIntialDialog() (Dialog应用)和 OnIntialUpdate(View应用)的 程序起始点
  5. 基于 OpenCV 的图像阴影去除,你会吗?
  6. arm指令集_重磅!Arm宣布:指令集,客户可自定义
  7. 做了一个验证码识别的网站
  8. Android新版NDK环境搭建
  9. POJ 2192 Zipper (简单DP)
  10. 计算机apk文件无法打开,【电脑怎么打开apk文件】电脑如何打开apk文件_电脑上怎么打开apk-系统城...
  11. 测量计算机编程fx500,工程测量中fx-500P计算器基本程序.doc
  12. antdesign 地图_Ant Design介绍
  13. 【OpenCV】Flutter 上采用ffi 与 c++ 的opencv交互使用总结
  14. C#--color颜色对照表
  15. 哪些方法可以用来提高微信小程序的应用速度?
  16. 【操作系统】CSAPP学习笔记
  17. 用Wireshark看见TLS握手过程
  18. 歌曲光辉岁月和弦走向探究
  19. SpringBoot启动报错Consider defining a bean of type ‘com.test.springmvc.dao.xx‘ in your configuration.
  20. java打印等腰三角形

热门文章

  1. 鲸会务高性价比的会议解决方案在这里
  2. 阿里巴巴2016校园招聘 研发工程师(三)详解
  3. 地铁三号线 - 幸福的长发男子
  4. 全球及中国便携式空气采样器行业发展态势及投资前景展望报告(2022-2027)
  5. 计算机概论和发展简史教案,计算机概论教案.pdf
  6. 网络访问计算机无法访问,工作组计算机无法访问,教您无法访问工作组计算机怎么办...
  7. Megaupload关闭波及Filesonic 分享功能被停
  8. 门户网站还有存在的意义吗?
  9. 关于vue/cli4.x vue-cli@4.x版本 浏览器兼容问题处理,兼容ie
  10. python开发的游戏手机上玩_Python学习太枯燥?4款编程手游让你边玩边学习!