## 项目中定时为什么用`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)
- 写在前面的话
- Java
- 基础
- Double的比较
- 小数怎么用二进制表示
- 多线程
- 并发和并行
- 线程池
- 线程池背景
- 线程池构造
- 任务阻塞队列
- Flutter
- 基础知识
- Dart基础
- Android
- 项目架构
- View
- 非UI线程更新View
- AlarmManager
- 对比postDelaryed和Timer
- Bitmap
- 加载100M的图片却不撑爆内存
- Bitmap压缩
- Bitmap局部解码
- 计算图片的内存占用
- Android动画
- Android动画类型
- Android动画原理
- 属性动画
- 帧动画
- 补间动画
- 使用动画的注意事项
- Android新特性
- 权限组
- Android23(Marshmallow)-6.0
- Android24(Nougat)-7.0
- Android26(Oreo)-8.0
- Android28(Pie)-9.0
- Android29(Q)-10.0
- AndroidX迁移
- Kotlin
- 关键字
- Kotlin操作符
- CoroutineScope
- Flow
- CoroutineException