关于AlarmManager运用需要注意事项和解决办法 在解决我所说的这些问题,大家先去看下Alarmmanger如何使用,并且其中一些简单的问题
参考地址:http://mp.weixin.qq.com/s?__biz=MjM5NDkxMTgyNw==&mid=2653057518&idx=1&sn=5ec26db7c8a3e887845935eae77113fd&scene=0#wechat_redirect
一、首先说下AlarmManager运用的时候碰到的问题
- 闹钟出现延迟,响铃不准确
- 在android4.4系统以下和android4.4系统以上设置闹钟不生效
- 关闭闹钟没成功,然后再去设置闹钟出现闹钟设置过多
- 自定义闹钟响铃不完整
二、接下来说下怎么会导致这些问题出现以及解决办法
- 【关于AlarmManager运用需要注意事项和解决办法】闹钟出现延迟,响铃不准确的原因是在android4.4以上,为了手机电池能用的时间更长,系统来最小化唤醒和电池使用。在有些手机上有性能模式和省点模式,如果想要闹钟准时去提醒的话,建议最好设置为性能模式,因为省点模式在手机待机时间比较长的情况下,手机的CPU会停止工作,断网,会导致闹钟广播发送不出去,你接收不到系统的广播,闹钟也不会去执行。当你打开手机屏幕的时候,CPU被唤醒,然后你之前要发送广播没发出去的就会在打开屏幕的瞬间,之前要响的闹钟都会进行发送广播响铃,导致闹钟同时触发响起。例如手机在待机时间长的情况下,微信发送过来的消息也同样接收不到。
- 在android4.4以下可以直接设置重复闹钟(建议不要直接用系统提供的设置重复闹钟方法,以防有误),在android4.4以上就没有设置重复闹钟的方法了,其实我们就可以在响铃后计算出下次响铃时间重新去设置闹钟。
- 在关闭闹钟的时候,传入的上下文最好与你设置闹钟的上下文一直,否则会出现之前的闹钟关闭没成功,后面有设置闹钟,这样进行的次数多了,就会出现安全性异常(设置闹钟过多)。如果你在不同的activity或service中都要去进行重新设置闹钟,建议你设置闹钟的时候,传入的上下文为整个应用的上下文。目前测试只在三星手机上出现过安全异常,华为,小米手机没发现问题。
- 关闭闹钟的时候还应该注意,要关闭闹钟的ID必须与你设置闹钟时候的ID保持一致。
三、在这补充一个问题,设置闹钟的时候
文章图片
这个方法是调用的服务,当闹钟需要响铃的时候,去直接启动服务,来进行你在服务中所需要的操作,比如重新闹钟,计算时间等。
文章图片
这个方法是发送广播,当接收器中接收到广播后,建议大家不要直接在接收器中操作太复杂的东西,那样容易导致你响铃不完整。最好去后台执行你需要的操作。比如重新闹钟,计算时间等。