關于聯想X3c70 鎖屏后Handler休眠的問題

事出有因

今日測試發現一個比較奇怪的bug,聯想X3c70,在一個倒計時的Dialog顯示在界面中的時候,將屏幕上鎖后,等待一段時間,再次點亮屏幕,發現Dialog上面的倒計時并沒有在鎖屏的時候繼續進行,在三星s7上測試發現是正常的,查找代碼發現倒計時更新界面邏輯是Handler執行的,后查找資料發現,原來handler在鎖屏之后會有休眠的情況出現(為什么s7沒有休眠的原因還沒有搞清楚,有知道的大神煩請告知)

解決方案

得知問題的原因后,就可以實施解決方案了,既然是因為休眠造成的,那么就在鎖屏的時候利用喚醒鎖,保證Hander不休眠

1、首先是獲取屏幕鎖屏的監聽,這個實現我們使用廣播來實現


廣播接收器

2、下面是注冊和取消注冊廣播的方法


取消和注冊廣播監聽

2、獲取喚醒鎖


獲取喚醒鎖

這樣我們就可以在屏幕點亮的時候獲取到鎖,來保證Handler不休眠

尾聲

另外需要注意的是,廣播在注冊后在合適的時間將其銷毀,喚醒鎖在使用之后記得調用release()釋放掉。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容