论坛首页 移动开发技术论坛

Android 定时器真机测试

浏览 7976 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-08-06   最后修改:2010-08-06
在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService了。


实验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才能保证自己想要的定时器一直工作,但是肯定会引起耗电量的增加。
   发表时间:2010-08-09  
sohuzhenghao 写道
mypyg 写道
在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService了。


实验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才能保证自己想要的定时器一直工作,但是肯定会引起耗电量的增加。

我们都是Java人

我之前是从北大青鸟培训出来的人,
在家乡做了1年Java开发,
没有学历,
只给2K,
加班无数不给加班费,
周末单休,
不签劳工合同,
没有保险。
无法忍受,之后来到上海做IT互联网猎头,


现在弄了一些Java技术交流群,号码是71532758 喜欢聊天 来加一下,

大家讨论一下技术,Java行情等,如果有喜欢聊天的朋友 共享一下Q群也好,只要500人的群。
我这里给大家推荐工作,
职位有
Java开发工程师
Java架构师
测试工程师
测试架构师
测试经理
ETL开发工程师
ETL架构师
运维工程师
mysql DBA
等等

有需要的加Q 280155570

真受不了。这个人大家对他有什么意见?
0 请登录后投票
   发表时间:2010-08-11  
pure 写道
sohuzhenghao 写道
mypyg 写道
在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService了。


实验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才能保证自己想要的定时器一直工作,但是肯定会引起耗电量的增加。

我们都是Java人

我之前是从北大青鸟培训出来的人,
在家乡做了1年Java开发,
没有学历,
只给2K,
加班无数不给加班费,
周末单休,
不签劳工合同,
没有保险。
无法忍受,之后来到上海做IT互联网猎头,


现在弄了一些Java技术交流群,号码是71532758 喜欢聊天 来加一下,

大家讨论一下技术,Java行情等,如果有喜欢聊天的朋友 共享一下Q群也好,只要500人的群。
我这里给大家推荐工作,
职位有
Java开发工程师
Java架构师
测试工程师
测试架构师
测试经理
ETL开发工程师
ETL架构师
运维工程师
mysql DBA
等等

有需要的加Q 280155570

真受不了。这个人大家对他有什么意见?

冻结帐号
0 请登录后投票
   发表时间:2010-08-18  
你这是在打北大青鸟的负面广告啊
0 请登录后投票
   发表时间:2010-08-24  
"我之前是从北大青鸟培训出来的人,"
他仅是为了说明他是废品而已。

0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics