欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android休眠,Android休眠后藍(lán)牙還是可以連接

Android 休眠喚醒頻繁問題分析的一些工具

大家都知道目前的手機(jī),平板等電子設(shè)備耗電都比較大,Android系統(tǒng)因?yàn)闅v史和開源等原因,一直對耗電支持的不是很好。特別現(xiàn)在很多apk完全不care耗電,動(dòng)不動(dòng)給你裝上全家桶,還會(huì)相互間互相喚醒進(jìn)程,簡直就是流氓軟件。從現(xiàn)有的應(yīng)用來說,為了他們商業(yè)目的,有很多是類似要求長期后臺(tái)運(yùn)行的,或者定時(shí)運(yùn)行的,這些服務(wù)對耗電影響都非常大。

成都創(chuàng)新互聯(lián)公司提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì),成都品牌網(wǎng)站建設(shè)廣告投放平臺(tái)等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破超過千家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

雖然Android每次版本大更新,都對其進(jìn)行了優(yōu)化,加入了很多特性。比如在Android 5.0加入了JobScheduler API機(jī)制(批處理);在Android 6.0加入App Standby(應(yīng)用待機(jī)),Doze休眠機(jī)制;并且在Android7.0谷歌對Doze休眠機(jī)制做了進(jìn)一步的優(yōu)化,只要手動(dòng)在后臺(tái)刪掉應(yīng)用卡片,關(guān)屏后該應(yīng)用就會(huì)被很快深度休眠。

但是應(yīng)用開發(fā)工程師由于各種原因沒有使用新的特性,導(dǎo)致用戶感覺設(shè)備耗電還是很大。所以國內(nèi)很多手機(jī)廠家都有對android系統(tǒng)的耗電進(jìn)行優(yōu)化,從原理來說,目前這些廠家也是主要對兩方面進(jìn)行優(yōu)化:

1.減少定時(shí)休眠喚醒頻率,比如合并應(yīng)用申請的定時(shí)喚醒鬧鐘來喚醒已經(jīng)休眠的設(shè)備。

2.減少wake lock的頻率和時(shí)間。只要系統(tǒng)中存在任一有效的wake_lock,系統(tǒng)就不能進(jìn)入深度休眠,但可以進(jìn)行設(shè)備的淺度休眠操作。wake_lock一般在關(guān)閉lcd、tp但系統(tǒng)仍然需要正常運(yùn)行的情況下使用,比如聽歌、傳輸很大的文件等。

可通過如下打印來確認(rèn)喚醒源:

4[ 1321.989235] wakeup gpio0: 00000010

具體意思如下:

gpio0:表示是GPIO0

00000010:表示的是GPIO分組從高到低四個(gè)字節(jié)分別是:DCBA,每個(gè)字節(jié)的0-7bit就表示D7-D0 ?C7-C0 ?B7-B0 ?A7-A0.

從這里可以看出上面喚醒的GPIO是:GPIO0 PA4,對應(yīng)的是RTC的中斷腳。

通過dumpsys alarm命令打印可以看到哪個(gè)應(yīng)用喚醒次數(shù)比較多,和總共占用的時(shí)間:

這里的喚醒統(tǒng)計(jì)的是:應(yīng)用申請 RTC_WAKEUP 或 ELAPSED_REALTIME_WAKEUP 的Alarm。不管系統(tǒng)是否在休眠,都會(huì)產(chǎn)生Alarm,所以這里的Alarm次數(shù)與第一章中說的kernel中統(tǒng)計(jì)的被RTC中斷喚醒的次數(shù)是匹配不上的,前都會(huì)大于后者。

看下Android系統(tǒng)定義的休眠喚醒不同的類型。

這個(gè)信息可以通過Project Volta里的工具h(yuǎn)istorian.py將其圖形化顯示。

先導(dǎo)出bugreport

將其轉(zhuǎn)換成圖形化結(jié)果(目前好像只有百度瀏覽器才能打開這個(gè)html)

簡單說明如下:

1.橫軸是時(shí)間

2. wifi_scan指的是wifi處于掃描

3. wifi_running指的是wifi打開狀態(tài)

4. screen指的是屏亮的狀態(tài)

5. plugged指的是插入外設(shè)

6. wake_lock指的是kernel中被鎖住的狀態(tài)

可通過screen與wake_lock來初步確認(rèn)系統(tǒng)是否被喚醒,如果screen是關(guān)的,然后又有wake_lock,也表明系統(tǒng)被喚醒并被鎖住一段時(shí)間。

把上層的喚醒和wifi喚醒都關(guān)了,測試了39個(gè)小時(shí)消耗30%電量

有以下幾個(gè)問題:

1.喚醒次數(shù)的確少了,但是healthd每10分鐘喚醒在圖上體現(xiàn)不出來

2.有2次喚醒后,系統(tǒng)被鎖住10多鐘才休眠下去

查看Alarm狀態(tài),可以很明顯看到上層沒有再去wake up

但是驅(qū)動(dòng)中還看到有被RTC喚醒,經(jīng)過驗(yàn)證是healthd喚醒的,不插充電的時(shí)候10分鐘,插充電的時(shí)候1分鐘間隔。這個(gè)喚醒后就更新battery的信息,上層Baterry更新下,UI刷新下。

系統(tǒng)被鎖住10幾分鐘,通過log分析在wifi斷開的時(shí)候,gms剛好去連接服務(wù)器,通訊很久造成wake 比較久。從下面的信息可以判斷,系統(tǒng)目前wake lock線程最多的是gms線程。

Wake lock 在Android的電源管理系統(tǒng)中扮演一個(gè)核心的角色,wakelock是一種鎖的機(jī)制, 只要有task拿著這個(gè)鎖, 系統(tǒng)就無法進(jìn)入休眠, 可以被用戶態(tài)進(jìn)程和內(nèi)核線程獲得。這個(gè)鎖可以是有超時(shí)的或者是沒有超時(shí)的, 超時(shí)的鎖會(huì)在時(shí)間過去以后自動(dòng)解鎖。如果沒有鎖了或者超時(shí)了, 內(nèi)核就會(huì)啟動(dòng)標(biāo)準(zhǔn)Linux的那套休眠機(jī)制機(jī)制來進(jìn)入休眠。

提高電池續(xù)航,也就意味著減少系統(tǒng)和程序的電量消耗。為此 經(jīng)過測試發(fā)現(xiàn),每次喚醒設(shè)備,1-2秒的時(shí)候,都會(huì)消耗2分鐘(個(gè)別應(yīng)用更久)的待機(jī)電量,可見每次喚醒設(shè)備的時(shí)候,不僅僅是點(diǎn)亮了屏幕,系統(tǒng)也在后臺(tái)處理很多事情。

電池消耗比較大,從系統(tǒng)的行為上分析,有兩個(gè)地方影響最大

1.系統(tǒng)在被喚醒的期間,被一些應(yīng)用wake lock比較久,造成很久時(shí)間無法再進(jìn)入二級(jí)休眠。

2.系統(tǒng)頻繁的被喚醒,系統(tǒng)被喚醒目前包含三個(gè)喚醒源

(1).系統(tǒng)上層通過AlarmMananger的接口注冊rtc喚醒,

(2).wifi芯片自動(dòng)喚醒,

(3).電池healthd定頻喚醒。

所以如果應(yīng)用比較多的時(shí)候,應(yīng)用在喚醒期間動(dòng)作比較多,容易造成系統(tǒng)被wake lock,從而不會(huì)很快的進(jìn)入二級(jí)休眠。

通過上述的分析來看,系統(tǒng)可以優(yōu)化的地方有4個(gè)方面。

1).查看系統(tǒng)wake lock最多的線程,看能不能優(yōu)化。

2).系統(tǒng)上層過濾的應(yīng)用喚醒行為,從而降低喚醒頻率。AlarmManager包含四種類型定時(shí)策略,AlarmManager.ELAPSED_REALTIME、AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、AlarmManager.RTC_WAKEUP、AlarmManager.POWER_OFF_WAKEUP。

其中應(yīng)用申請RTC_WAKEUP或ELAPSED_REALTIME_WAKEUP的Alarm在系統(tǒng)休眠的情況下會(huì)喚醒系統(tǒng)。通過建立白名單或者黑名單的方式過濾此種應(yīng)用的喚醒行為

3). 定時(shí)批處理一批操作,壓縮硬件喚醒時(shí)間,就像心跳一樣,讓硬件充分休息,還有就是精確監(jiān)測應(yīng)用請求,智能安排請求執(zhí)行時(shí)間,讓資源利用最大化。

4).擴(kuò)大healthd的定頻喚醒間隔(適度不然造成電池電量不準(zhǔn))

最后改一張調(diào)整過的電池狀態(tài)圖:

怎樣讓android系統(tǒng)休眠啊,關(guān)屏后還一直喚醒著,很耗電

讓android系統(tǒng)休眠,關(guān)屏后還一直喚醒著,很耗電的解決辦法如下:

系統(tǒng)運(yùn)行的時(shí)候有很多軟件后臺(tái)運(yùn)行著,可以卸載一些不常用的軟件,來減低系統(tǒng)的負(fù)荷。

可以將系統(tǒng)屏幕關(guān)閉時(shí)間減少,來減少屏幕開啟時(shí)間過長,打開手機(jī)設(shè)置,點(diǎn)擊顯示,找到屏幕自動(dòng)關(guān)閉選項(xiàng),將時(shí)間設(shè)置到最低。

android系統(tǒng)休眠關(guān)閉了哪些功能

Android的幾種不同的休眠模式

如果不進(jìn)行特別的設(shè)置,Android會(huì)在一定時(shí)間后屏幕變暗,在屏幕變暗后一定時(shí)間內(nèi),約幾分鐘,CPU也會(huì)休眠,大多數(shù)的程序都會(huì)停止運(yùn)行,從而節(jié)省電量。但你可以在代碼中通過對Powmanager API的調(diào)用來設(shè)置不同的休眠模式。

Flag Value CPU Screen Keyboard

PARTIAL_WAKE_LOCK On* Off Off

SCREEN_DIM_WAKE_LOCK On Dim Off

SCREEN_BRIGHT_WAKE_LOCK On Bright Off

FULL_WAKE_LOCK On Bright Bright

如上表,最高等級(jí)的休眠是屏幕,鍵盤等,cpu都全部休眠。可以設(shè)置不同的模式,讓其產(chǎn)生不同的休眠,比如讓cpu保持運(yùn)行。

本文標(biāo)題:android休眠,Android休眠后藍(lán)牙還是可以連接
當(dāng)前路徑:http://chinadenli.net/article33/dssppss.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)響應(yīng)式網(wǎng)站企業(yè)建站小程序開發(fā)網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)