wakelock,Android_WakeLock使用

 2023-11-18 阅读 26 评论 0

摘要:1.前言與WakeLock簡介 1.1.前言 一些手機app(如微信、QQ等)有新消息來到達,手機屏幕即使在鎖屏狀態下也會亮起,并提示用戶有新消息。但是,一般情況下手機鎖屏后,Android系統為了省電以及減少CPU消耗,在一段時間后會使系統進

1.前言與WakeLock簡介

1.1.前言

一些手機app(如微信、QQ等)有新消息來到達,手機屏幕即使在鎖屏狀態下也會亮起,并提示用戶有新消息。但是,一般情況下手機鎖屏后,Android系統為了省電以及減少CPU消耗,在一段時間后會使系統進入休眠狀態,這時,Android系統中CPU會保持在一個相對較低的功耗狀態,而收到新消息必定有網絡請求,而網絡請求是消耗CPU的操作,那么如何在鎖屏狀態乃至系統進入休眠后,仍然保持系統的網絡狀態以及通過程序喚醒手機呢?答案就是Android中的WakeLock機制。

1.2. Wakelock 鎖機制

應用程序可以通過申請 wakelock 鎖的機制來對系統是否待機作出投票,當有任何一個應用申請了 wakelock 鎖,待機時沒有釋放掉,系統是不會進入待機的,直到所有應用的 wakelock 鎖都釋放掉了,才會進入待機。

2.WakeLock使用

2.1.添加使用權限

    <uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.DEVICE_POWER" />

2.2.獲取與釋放鎖

    private PowerManager.WakeLock wakeLock = null;private static final String mWakeLockName = "BackupService";/*** 獲取電源鎖,保持該服務在屏幕熄滅時仍然獲取CPU時,保持運行*/private synchronized void acquireWakeLock() {if (null == wakeLock) {PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK| PowerManager.ON_AFTER_RELEASE, mWakeLockName);if (null != wakeLock) {LogUtil.d(TAG, "acquireWakeLock!");wakeLock.acquire();}}}/*** 釋放設備電源鎖*/private synchronized void releaseWakeLock() {if (null != wakeLock) {LogUtil.d(TAG, "releaseWakeLock!");wakeLock.release();wakeLock = null;}}

2.3.WakeLock 類型以及說明:

  • PARTIAL_WAKE_LOCK:保持CPU 運轉,屏幕和鍵盤燈有可能是關閉的。
  • SCREEN_DIM_WAKE_LOCK:保持CPU運轉,允許保持屏幕顯示但有可能是灰的,允許關閉鍵盤燈
  • SCREEN_BRIGHT_WAKE_LOCK:保持CPU運轉,允許保持屏幕高亮顯示,允許關閉鍵盤燈
  • FULL_WAKE_LOCK:保持CPU 運轉,保持屏幕高亮顯示,鍵盤燈也保持亮度
  • ACQUIRE_CAUSES_WAKEUP:強制使屏幕亮起,這種鎖主要針對一些必須通知用戶的操作.
  • ON_AFTER_RELEASE:當鎖被釋放時,保持屏幕亮起一段時間

2.4 WakeLock注意事項

WakeLock的設置是 Activiy 級別的,不是針對整個Application應用的。所以application下有多個activity一定需要注意下!

3.潛在問題

之前公司手機查功耗這塊,也是我們框架組負責的,導致功耗問題的原因非常多,其中包括一些應用WakeLock不釋放,導致功耗不通過。所以獲取與釋放一定要配對使用,不然要么GG了,再不然估計就要被強殺策略強殺了。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/177508.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息