在Android上常用的定时器有两种,一种是系统的AlarmService,一种就是Java.util.Timer了。
实验1:使用Java.util.Timer。
在onStart()创创建Timer,每5秒更新一次计数器,并启动。
- mTimer = new Timer();
mTimer.schedule(new TimerTask() {
@Override
public void run() {
++mCount;
mHandler.sendEmptyMessage(0);
}
}, 5*1000, 5*1000);
当连接USB线进行调试时,会发现一切工作正常,每5秒更新一次界面,即使是按下电源键,仍然会5秒触发一次。
当拔掉USB线,按下电源键关闭屏幕后,过一段时间再打开,发现定时器明显没有继续计数,停留在了关闭电源键时的数字。
实验2:使用AlarmService:
2.1通过AlarmService每个5秒发送一个广播,setRepeating时的类型为AlarmManager.ELAPSED_REALTIME。
- AlarmManager am =
(AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000, sender);
拔掉USB线,按下电源键,过一段时间再次打开屏幕,发现定时器没有继续计数。
2.2setRepeating是的类型设置为AlarmManager.ELAPSED_REALTIME_WAKEUP
- AlarmManager am =
(AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 5*1000, sender);
拔掉USB线,按下电源键,过一点时间再次打开屏幕,发现定时器一直在计数。
如此看来,使用WAKEUP才能保证自己想要的定时器一直工作,但是肯定会引起耗电量的增加。
相关推荐
android实现定时器有很多种,例子中选了Timer、CountDownTimer、handler+postDelay、handler+handler等几种实现了一下,欢迎下载!
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
主要介绍了Android实现定时器的五种方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
android 中定时器的3个实现方法(均测试通过) 一、采用Handler与线程的sleep(long)方法 二、采用Handler的postDelayed(Runnable, long)方法 三、采用Handler与timer及TimerTask结合的方法
本篇文章主要介绍了详解Android实现定时器的几种方法,主要包括了Handler, Timer, Thread, AlarmManager,有兴趣的可以了解一下
主要介绍了Android 实现定时器的四种方式总结及实现实例的相关资料,这里对定时器进行详解,并附实例代码,需要的朋友可以参考下
android实现定时器 部分游戏源代码
主要为大家详细介绍了Android实现定时器的3种方法,感兴趣的小伙伴们可以参考一下
Android 闹铃定时器实现,注意:此demo在原生Android系统上没问题,但在国内大多数定制机上,如果关闭后台,闹铃一般不会触发 ╮(╯_╰)╭
Android定时器功能实现方法
本文主要介绍 Android 定时器的知识资料,这里整理了三种方法来实现定时器的方法,有需要的小伙伴可以参考下
android 定时器的实现 保证一看就会
android定时器的三种实现方式 含代码
在Android开发中,定时器一般有以下3种实现方法:1.采用Handle与线程的sleep(long)方法; 2.采用Handler的postDelayed(Runnable, long)方法; 3.采用Handler与timer及TimerTask结合的方法.
这是一个高仿Nubia 定时器的一个自定义view,实现了nubia定时器的大部分效果。
在Android开发中,经常会用到需要定时更新界面或者周期性地读取发送数据,本资源通过一个例子实现了定时器和线程,欢迎参考!