实验设备android版本:7.0
android开发的小伙伴们使用频度最高的Handler和Message,在系统进入深度休眠之后,是无法正确执行的,因此有些时候小伙伴们可能会疑惑为什么我明明由Handler发出了一个定时任务(Message或Runnable),但为什么没有执行呢?
但是过度的担心休眠问题,而全程持有wacklock,也是没有必要的。因为实际情况下,系统有很多机会被唤醒,比如来电、短信、网络状态变更、网络侧过来了数据包等等,只不过需要注意的是,这样的唤醒有可能是短暂的(系统可能很快再次睡下去),如果你有耗时的操作,那么你需要在这样的唤醒节点申请wacklock,并在耗时操作执行完毕后,释放掉wacklock,这样才能确保代码的正确执行。
对于需要与后台保持长连接心跳或者其他定时周期性主动交互的程序,那么可能需要用到系统的定时唤醒机制。通常安卓系统定时唤醒机制的参考打开方式,分以下三步:
1、自定义广播
Intent intent_alarm = new Intent("com.tgt.device.manager.RTC_WAKEUP");
2、定义该广播的接收器(由于这里采用了指定发送的方式,因此该receiver并不需要声明IntentFilter)