永发信息网

android定时器alarmmanager和timer的区别

答案:2  悬赏:80  手机版
解决时间 2021-01-05 15:52
android定时器alarmmanager和timer的区别
最佳答案
Java的Timer类可以用来计划需要循环执行的任务。
简单的说,一个Timer内部封装装了“一个Thread”和“一个TimerTask队列”,这个队列按照一定的方式将任务排队处理。封装的Thread在Timer的构造方法调用时被启动,这个Thread的run方法按照条件去循环这个TimerTask队列,然后调用TimerTask的run方法。

但是,如果CPU进入了休眠状态,那么这个thread将会因为失去CPU时间片而阻塞,从而造成我们需要的定时任务失效。上述定时任务失效的场景分析:假设定时任务的条件是到了时间xx:yy才能执行,但由于cpu休眠造成线程阻塞的关系,当前系统时间超过了这个时间,即便CPU从终端中恢复了,那么由于条件不满足,定时任务在这一次自然就失效了。

它需要用WakeLock让CPU 保持唤醒状态。这样会大量消耗手机电量,大大减短手机待机时间。这种方式不能满足需求。

AlarmManager是Android 系统封装的用于管理RTC的模块,RTC(Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒CPU。这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。
全部回答
ava代码
1mTimer = new Timer();
2mTimer.schedule(new TimerTask() {
3 @Override
4 public void run() {
5 ++mCount;
6 mHandler.sendEmptyMessage(0);
7 }
8 }, 5*1000, 5*1000);
当连接USB线进行调试时,会发现一切工作正常,每5秒更新一次界面,即使是按下电源键,仍然会5秒触发一次。
当拔掉USB线,按下电源键关闭屏幕后,过一段时间再打开,发现定时器明显没有继续计数,停留在了关闭电源键时的数字。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
躺着唱歌能练气息吗?
用3-4-610 写出三种24点
育明小学三年级的部分同学排成一个实心方阵,
所有可按当前格式播放文件的波形设备都被占用
沙参煲汤 沙参怎么煲汤
怎样开启辰r50 暖风
科学配餐对人体健康十分重要,下面是某午餐的
A、B、C三种物质的溶解度曲线如图所示:(1)
合肥移动宽带办理杯北城地址
音乐胎教有效吗?
玉柴yc6Mk420L_D20风扇皮带的安装方法?
dota中牛头人怎么无限余震?我看很多人都能在
QQ三国挂2个小号死在练级地图里经验会多点,
find the shortest distance from the point(
做完胛状腺一直发胖,应该查哪些因素
推荐资讯
amd635跟fx6300哪个好
女生说“哼!”我该怎么回答
宗孙是什么意思,是只有长子的儿子才叫宗孙吗
冬季去挪威特隆赫姆要注意些什么?
我妹夫不叫我姐叫我美女,我该生气吗
我国最早的一部文人词总集是()
虫娄市场价格是多少一斤
不知道这算不算是心理问题
淘宝购物,顺丰快递把快递单贴错,导致我收到
请问有无人知道喺广州边度可以买到《世纪回眸
HD6400M和GT610M这两个独显哪个好?具体好多
我记得高中数学有个公式,左边好像是x的几次
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?