新收藏

关于联想X3c70 锁屏后Handler休眠的问题

2017-05-10  本文已影响59人  迷途小顽童

事出有因

今日测试发现一个比较奇怪的bug,联想X3c70,在一个倒计时的Dialog显示在界面中的时候,将屏幕上锁后,等待一段时间,再次点亮屏幕,发现Dialog上面的倒计时并没有在锁屏的时候继续进行,在三星s7上测试发现是正常的,查找代码发现倒计时更新界面逻辑是Handler执行的,后查找资料发现,原来handler在锁屏之后会有休眠的情况出现(为什么s7没有休眠的原因还没有搞清楚,有知道的大神烦请告知)

解决方案

得知问题的原因后,就可以实施解决方案了,既然是因为休眠造成的,那么就在锁屏的时候利用唤醒锁,保证Hander不休眠

1、首先是获取屏幕锁屏的监听,这个实现我们使用广播来实现

广播接收器

2、下面是注册和取消注册广播的方法

取消和注册广播监听

2、获取唤醒锁

获取唤醒锁

这样我们就可以在屏幕点亮的时候获取到锁,来保证Handler不休眠

尾声

另外需要注意的是,广播在注册后在合适的时间将其销毁,唤醒锁在使用之后记得调用release()释放掉。

上一篇下一篇

猜你喜欢

热点阅读