事出有因
今日测试发现一个比较奇怪的bug,联想X3c70,在一个倒计时的Dialog显示在界面中的时候,将屏幕上锁后,等待一段时间,再次点亮屏幕,发现Dialog上面的倒计时并没有在锁屏的时候继续进行,在三星s7上测试发现是正常的,查找代码发现倒计时更新界面逻辑是Handler执行的,后查找资料发现,原来handler在锁屏之后会有休眠的情况出现(为什么s7没有休眠的原因还没有搞清楚,有知道的大神烦请告知)
解决方案
得知问题的原因后,就可以实施解决方案了,既然是因为休眠造成的,那么就在锁屏的时候利用唤醒锁,保证Hander不休眠
1、首先是获取屏幕锁屏的监听,这个实现我们使用广播来实现
广播接收器2、下面是注册和取消注册广播的方法
取消和注册广播监听2、获取唤醒锁
获取唤醒锁这样我们就可以在屏幕点亮的时候获取到锁,来保证Handler不休眠
尾声
另外需要注意的是,广播在注册后在合适的时间将其销毁,唤醒锁在使用之后记得调用release()释放掉。
网友评论