手机更新时间后,过期的闹钟异常响起

原创 2016年08月30日 22:59:36

前段时间测试提了一个bug,是这样的,设置一个闹铃,等待闹铃时间到,闹铃响应,然后插拔电池,让手机系统时间恢复到出厂默认时间,让手机联网,等待手机时间更新后,已经过期的闹钟突然响了,这让人百思不得其解,我在试图修改的时候发现在Desclock里竟然没有比对系统时间与设置闹铃时间比对然后执行响铃的逻辑(可能是本人水平有限),在解析唯一一个传入进来的Intent的时候发现唯一一个没被处理的消息类型TIME_TICk,然后追踪发现在framework的AlrmManagerService中有一个PengdingIntent是发送这个消息的(猜想比对时间的逻辑可能更加底层),当时在想如果在发送PengdingIntent的时候加个判断,如果当前时间与系统时间的差值大于一分钟,就停止响铃,可一想又不对,如果我在这里禁止里一分钟意外的响铃,那么延时闹钟也会被禁掉,所以将此问题提交给MTK平台,他们给出的回复是这样的:

After change the system time, System will send TIME_SET broadcast, DeckClock receives it and set the passed alarm as MISSED state.
however, because the user has set an valid alarm before, AlarmManager will send the alarm broadcast either, and this action will make the alarm rings.
That is the problem, if DeskClock receives the AlarmManager’s action first, it will ring, then receive TIME_SET, that it makes the alarm dismiss.
The behavior is expected as per Google default design.
The processsing of broadcast for TIME_SET may be parsed as per the system scheduling.
In some cases the AlarmManager action for alarm expiry may be parsed before processing TIME_SET by alarm service.
This causes the Alarm screen to appear. However, as soon as the TIME_SET is processed, we configure the MISSED_STATE for the alarm and dismiss the screen.

由此可知这根本不是bug,而是谷歌设计师当初设计的时候就是这样的

版权声明:本文为博主原创文章,未经博主允许不得转载。

android 手动设置时间 过期闹钟被触发

最近在做闹钟的一个小程序,发现了一个问题。这个问题在网上都没有找到合适的答案,最后还是在闹钟的源码里面找到答案的。     相信很多人都和我一样,都遇到了这样的问题。     当你设置好闹钟以后,...
  • jiankeufo
  • jiankeufo
  • 2015年04月22日 10:36
  • 1141

Android开发之实现对闹钟Alarm的控制

随着可穿戴及其他一些辅助设备的出现,在这些设备上实现对Android手机的控制就有了需求,如下图。 不要在意相机,闹铃才是重点。。 Android 闹钟应用是在packages/app...
  • u012840649
  • u012840649
  • 2014年04月20日 20:38
  • 2489

android 手机后台播音乐,设置闹钟,打一通电话,挂断电话后,闹钟与音乐同时响起

修改: frameworks\base\media\java\android\media\MediaFocusControl.java: 1、import packages: import co...
  • sergeycao
  • sergeycao
  • 2014年11月05日 17:08
  • 1346

Android中对闹钟Alarm的事件处理

本文主要描述了如何控制Android闹钟,简介清晰
  • yihongyuelan
  • yihongyuelan
  • 2014年10月29日 15:28
  • 13097

Android AlarmManager 锁屏显示闹钟

锁屏状态下点亮屏幕,并弹出闹钟提示信息,可以在锁屏界面上取消闹钟;使用广播接收闹钟定时: 下面是例子里的核心代码如下 android 设置定时闹钟(包括提醒一次和循环提醒): Intent i...
  • wr132
  • wr132
  • 2015年10月08日 14:25
  • 1573

android广播事件处理broadcast receive -闹钟实例(运用alarmmanager)

对应AlarmManage有一个AlarmManagerServie服务程序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,li...
  • Vincent20111024
  • Vincent20111024
  • 2013年09月15日 17:39
  • 1963

闹钟的设计原理与实现

闹钟的设计原理与实现(一)   华中科技大学 陈学友 2012年5月18日     内容摘要 现在很多人由于需要处理各种事物,但是由于某些原因可能会忘记在某个时间段需要完成的工作和其他事...
  • qq910894904
  • qq910894904
  • 2012年05月18日 16:25
  • 4031

实现类似闹钟时间选择的时间选择器

时间选择器大多是年月日那种三级联动的,今天实现了一个小小的区别三级联动的时间选择器,...
  • xi_yan01
  • xi_yan01
  • 2017年03月13日 20:37
  • 357

仿系统闹钟,实现更新安装之后还可以响铃,开机启动功能需要手机自带开机自启动

忽然飞来一个新的需求,APP的日程安排需要添加一个闹钟提醒,我的天,这是要逆天啊,刚开始做的时候,没想那么多,因为了解的少吗,再加上不知道QQ和微信等已经被厂商加入了白名单,本来想也就是几天的工作量,...
  • sinat_29874521
  • sinat_29874521
  • 2017年04月27日 17:21
  • 915

Android 闹钟机制实现定时任务解决重启失效问题

Android的闹钟实现机制很简单, 只需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。 本文分...
  • Sp402758418
  • Sp402758418
  • 2013年11月27日 14:57
  • 2686
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:手机更新时间后,过期的闹钟异常响起
举报原因:
原因补充:

(最多只允许输入30个字)