Android中的兩把鎖

2021-08-31 11:21:18 字數 2143 閱讀 9100

walklock - 顧名思義 喚醒鎖 點亮螢幕用的

keyguardlock - 顧名思義 鍵盤鎖 解鎖鍵盤用的

詳細介紹:

1: walklock 喚醒鎖

- walklock真的能點亮螢幕嗎?

答案是肯定的。 可是有時候為什麼不點亮螢幕,這個就是引數設定的問題了。

powermanager.newwakelock(powermanager.full_wake_lock | powermanager.acquire_causes_wakeup, "gank");

powermanager.full_wake_lock 這個引數是手機點亮的程度,(什麼cpu,螢幕亮度,鍵盤燈)

powermanager.acquire_causes_wakeup 關鍵是這個引數的理解。

walklock點亮螢幕並非真的去點亮了螢幕,你可以理解為,它通過android元件(activity)去點亮了螢幕。

假如乙個通知想去點亮螢幕,問題來了,它能點亮嗎? 肯定不行。

不過擁有這個powermanager.acquire_causes_wakeu引數,你就可以點亮螢幕了。它使walklock不再依賴元件就可以點亮螢幕了。

- walklock如何獲得螢幕的狀態?

powermanager.isscreenon()方法;這個方法返回true: 螢幕是喚醒的 返回false:螢幕是休眠的

- walklock喚醒和休眠的方法?

walklock.aquire() 在螢幕休眠的狀態下喚醒螢幕

walklock.release() 在螢幕點亮的狀態下,使螢幕休眠。

walklock.release()這個方法有個需要注意的地方:

例如:walklocka物件先喚醒了螢幕再使螢幕休眠,ok沒問題

螢幕本身就是喚醒狀態,walklocka物件沒有喚醒過螢幕,walklocka物件如果嘗試使螢幕休眠。會產生乙個異常 unlock sreen。

2:keyguardlock 鍵盤鎖

- keyguardlock獲得當前螢幕是否解鎖?

keygroundmanager.inkeyguardrestrictedinputmode() 返回true表示鍵盤鎖住, 返回false表示鍵盤解鎖中

- keyguardlock給螢幕解鎖和上鎖?

keyguardlock.disablekeyguard()解鎖鍵盤

keyguardlock.reenablekeyguard()鎖鍵盤

keyguardlock沒有上面喚醒鎖的問題,就是無論你鍵盤是否由keyguardlocka解鎖,你呼叫keyguardlocka物件的reenablekeyguard()方法都不會有異常。

這兩把鎖一些概念性的理解,假如你認為你獲得了乙個鍵盤鎖物件,你就可以鎖螢幕了。這個就大錯特錯了。

你鎖不了其他程式開啟的螢幕(如果可以的話,乙個for迴圈一直鎖你螢幕,你哭都沒眼淚)

你可以控制自己的鎖,別想著別人的鎖。

最後總結下用法:

一般這兩把鎖都是配合使用的,你解鎖螢幕的時候肯定不希望螢幕漆黑一片。關閉鍵盤鎖的時候希望螢幕也同時休眠。

問題:1:我嘗試手動關閉螢幕,可是總繼續亮那麼一小會。

2:如果手機自動關閉螢幕的話,不會有這個問題。

public void unlockscreen()

// 獲得乙個keyguardmanager的例項

km = (keyguardmanager) mcontext

.getsystemservice(context.keyguard_service);

// 得到乙個鍵盤鎖keyguardlock

mkeyguardlock = km.newkeyguardlock("******timer");

if (km.inkeyguardrestrictedinputmode())

}注意,這裡使用的mwakelock.isheld())來判斷螢幕當前是否是休眠狀態,從android 2.1 api level7開始增加了乙個判斷螢幕是否處於點亮狀態可以使用public boolean isscreenon ()這個方法。

鎖螢幕的**是

public void lockscreen()

// 使螢幕休眠

if (mwakelock.isheld())

}

雲容災的兩把利器 雲計算技術與虛擬化

對共享的動態可配置的計算資源 如網路 伺服器 儲存 應用和服務 提供無所不在的 標準的 隨需的網路訪問 資源的使用和釋放可以快速進行,自動化的管理,不需要多少管理代價 計算環境的構建能夠減低it投入成本,並且獲得隨需應變的計算環境 這些都是雲計算的優點。據統計,當前大部分企業it經費的80 是用於i...

android工程中把資料儲存到檔案中的class

import android.content.context import android.content.sharedpreferences import android.util.log public class sharedpreferenceshelper return sharedpref...

Linux中的兩種檔案鎖 協同鎖與強制鎖

檔案鎖是一種檔案讀寫機制,在任何特定的時間只允許乙個程序訪問乙個檔案。利用這種機制能夠使讀寫單個檔案的過程變得更安全。在這篇文章中,我們將 linux中不同型別的檔案鎖,並通過示例程式來理解它們之間的不同之處。我們將採取以下的例子來解釋為什麼需要使用檔案鎖。1 程序 a 開啟和讀取乙個檔案,此檔案包...