2013-03-25 110 views
15

我正在搜索SO和網頁,但我無法找到足夠的答案來解決我的特定問題。好的,我們開始吧:Android設備何時進入睡眠模式?

每個用戶都可以在android上修改屏幕超時。 (當屏幕關閉__秒/分鐘空閒時 - 用戶選擇)。但是用戶可以修改只有屏幕超時而不是當設備實際進入睡眠狀態。我在這裏發現設備進入睡眠狀態時會發生什麼:(由CommonsWare回答非常好)Android Sleep/Standby Mode

好的,我的問題很簡單。我怎麼知道我的手機什麼時候會睡覺?在關閉屏幕後它會立即睡覺嗎?屏幕關閉後它會保持「清醒」狀態嗎?最重要的是:特定設備的睡眠模式與品牌設備(製造商如何實現這一點)有所不同,或者取決於ROM版本(例如,所有ICS供電的設備將在關閉屏幕後X秒鐘休眠)?

回答

23

你永遠無法確定設備是否已經入睡。在最好的情況,我可以給你的東西,將確保一個列表,該設備一直沒有去睡覺:

  • 屏幕是上 - 需要CPU和GPU,因此RAM,保持活躍
  • 任何應用拿着喚醒鎖定 - 即使是最低wakelocks保持在CPU上,雖然屏幕可能會被關閉

除此之外,也不能保證該設備將進入睡眠狀態n秒屏幕開啓後即使沒有舉行喚醒手槍。這取決於OEM,他們可以改變這一點。

請記住,Android設備有一個選項,可以在屏幕進入睡眠狀態後讓設備解鎖一段時間。

+0

+1了很好的解釋。 – Raghunandan 2013-03-25 16:46:02

+1

即使我沒有要求你回答我的問題: 「請記住,Android設備有一個選項,可以在屏幕進入睡眠狀態後讓設備解鎖一段時間。」 很好的答案.. – rootpanthera 2013-03-25 16:56:04

8

當您將手機與筆記本電腦進行比較時,功耗差別不大。大多數時候筆記本電腦都是通過充電器直接供電的。 (主要是我們攜帶筆記本電腦充電)。 手機主要使用電池供電。 (我們很少攜帶充電器)。

通過牢記這一點,android設計的方式是,如果用戶沒有與手機進行交互,手機將不會消耗電池電量。這是爲了增加用戶的電池備份時間。

這就是爲什麼當LCD屏幕電源關閉時(這意味着用戶沒有與手機進行交互),只需幾秒鐘,CPU也會進入一種模式(睡眠模式),在這種模式下它可以最小的工作並節省電池電量。當CPU處於睡眠模式時,它僅接受來自RIL(無線電接口層)的命令,該命令基本上是SMS和呼叫功能以及警報。除此之外,CPU將停止執行其他應用程序功能。

注意:如果任何應用程序在CPU處於睡眠模式時需要CPU時間進行緊急工作,則可以使用WAKE LOCKS請求CPU時間。

例如:即使用戶關閉了LCD屏幕,MP3應用程序也必須繼續播放其服務中的歌曲。這意味着MP3應用程序的服務通過使用WAKE LOCKS來請求CPU時間。

您的問題:我如何知道我的手機何時會進入睡眠狀態? - Ans:當液晶顯示器電源關閉時,簡單它進入睡眠模式,以秒爲單位。

你的問題:是否在特定設備的睡眠模式,從品牌的設備 變化 - :由於Android是開源的,任何OEM可以驅動層,這是GPU許可證,可以修改電源管理驅動器行爲有所不同。所有這些睡眠模式和喚醒鎖最終都受到Linux內核層的Power Manager驅動程序的控制。

4

測試睡眠模式/休眠中的Android 6.0,你應該使用下一個命令:

$ adb shell dumpsys battery unplug 
$ adb shell dumpsys deviceidle step 

更多信息請看這裏:Optimizing for Doze and App Standby

相關問題