多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 项目中定时为什么用`AlarmManager`,不用`postDelayed`? `AlarmManager` 经常被用来执行定时任务,比如设置闹铃、发送心跳包等。也许有人会有疑问:为什么不能使用相同具有定时效果的 `Timer` 和 `Handler` 呢? 其实答案非常简单,相对于 `Handler` 来说,使用 `sendEmptyMessageDelayed`方法是依赖于 `Handler` 所在的线程的,如果线程结束,就起不到定时任务的效果;而 `AlarmManager` 依赖的是 **Android 系统**的服务,具备唤醒机制。比起 `Handler` 也就更合适了。 而至于 `Timer` 可以精确地做到定时操作,但是相比于 `AlarmManager` 而言还是差了一截。同理,如果手机关屏后长时间不使用,`CPU` 就会进入休眠模式。这个使用如果使用 `Timer` 来执行定时任务就会失败,因为 `Timer` 无法唤醒 `CPU`。 所以,综上所述,AlarmManager就成为了最佳选择。 ***** 文章到这里就全部讲述完啦,若有其他需要交流的可以留言哦~!~! 想阅读作者的更多文章,可以查看我 [个人博客](http://dandanlove.com/) 和公共号:![振兴书城](https://imgconvert.csdnimg.cn/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzEzMTk4NzktNjEyYzRjNjZkNDBjZTg1NS5qcGc?x-oss-process=image/format,png)