1. 程式人生 > >Android省電策略及測試

Android省電策略及測試

1、電源測試
----------------------------------------------------
1)檢視電源狀態:
adb shell dumpsys battery
Current Battery Service state:
  (UPDATES STOPPED -- use 'reset' to restart)
  mBootCompleted: true
  AC powered: false
  USB powered: false
  Wireless powered: false
  Max charging current: 0
  Max charging voltage: 0
  Charge counter: 2767936
  status: 2
  health: 2
  present: true
  level: 81
  scale: 100
  voltage: 4071
  temperature: 359
  technology: Li-ion
  batterySWSelfDischarging: false
  batteryMiscEvent: 0
  batteryCurrentEvent: 0
  mSecPlugTypeSummary: 0
  LED Charging: true
  LED Low Battery: true
  current now: -2
  charge counter: 2767936
  Adaptive Fast Charging Settings: true
USE_FAKE_BATTERY: false
SEC_FEATURE_BATTERY_SIMULATION: false
FEATURE_WIRELESS_FAST_CHARGER_CONTROL: true
  mWasUsedWirelessFastChargerPreviously: false
  mWirelessFastChargingSettingsEnable: true
LLB CAL: 20180118
LLB MAN:
LLB CURRENT: YEAR2018M6D27
LLB DIFF: 22
BatteryInfoBackUp
  mSavedBatteryAsoc: 95
  mSavedBatteryMaxTemp: 473
  mSavedBatteryMaxCurrent: 3000
  mSavedBatteryUsage: 19972
  FEATURE_SAVE_BATTERY_CYCLE: true

2)模擬未充電模式:
adb shell dumpsys battery unplug
通過命令1看是否生效
重置電源充電狀態:adb shell dumpsys battery reset

3)省電模式:
adb shell settings put global low_power 1

4)API:
PowerManager.isPowerSaveMode()
PowerManager.ACTION_POWER_SAVE_MODE_CHANGED


2、後臺限制

----------------------------------------------------
To simulate conditions where implicit broadcasts and background services are unavailable, enter the following command:
$ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND ignore
To re-enable implicit broadcasts and background services, enter the following command:
$ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND allow

1)加入應用後臺限制
appops set <package-name> RUN_IN_BACKGROUND ignore

2)移除限制
appops set <package-name> RUN_IN_BACKGROUND allow

PS:
RUN_ANY_IN_BACKGROUND:P獨有?O系列報錯。
RUN_IN_BACKGROUND:O及以下系列。


3、獲得JobScheduler狀態

----------------------------------------------------
JobScheduler與Android 6.0的Doze,總結來說就是限制應用頻繁喚醒硬體,從而達到省電的效果。

1)adb shell dumpsys jobscheduler
----------------
Tracking 29:
  #1000/106603 from u0a247: Delay=-1h12m12s354ms, Deadline=-12s354ms
  #u150a34/4096 from u150a34: Delay=+9m47s771ms, Deadline=+9m47s771ms

Current stats at 2018-07-09-13-43-53 (-53m14s780ms) over +51m32s807ms:
  5012 / com.samsung.android.sm.devicesecurity.tcm: 3x pending 3x active
  5017 / com.samsung.android.samsungpositioning: 5x pending 2x active

  Job history at 2018-07-09 14:37:08.016:
       -33m32s471ms START: u0a187 com.sec.android.app.shealth/com.samsung.android.service.health.server.manifest.ManifestSyncService

Pending queue:

Active jobs:
  Slot #0: inactive since -29s596ms, stopped because: app called jobFinished
  Slot #1: inactive since -7m2s221ms, stopped because: app called jobFinished
  Slot #2: inactive since -6m2s195ms, stopped because: last work dequeued
  Slot #3: inactive since -16m7s703ms, stopped because: last work dequeued
  Slot #4: inactive since -16m7s720ms, stopped because: app called jobFinished
  Slot #5: inactive since -16m7s735ms, stopped because: last work dequeued
  Slot #6: inactive
  Slot #7: inactive
  Slot #8: inactive
  Slot #9: inactive
  Slot #10: inactive
  Slot #11: inactive
  Slot #12: inactive
  Slot #13: inactive
  Slot #14: inactive
  Slot #15: inactive

mReadyToRock=true
mReportedActive=false
mMaxActiveJobs=6

當你需要在Android裝置滿足某種場合才需要去執行處理資料,例如 
* 應用具有您可以推遲的非面向使用者的工作(定期資料庫資料更新) 
* 應用具有當插入裝置時您希望優先執行的工作(充電時才希望執行的工作備份資料) 
* 需要訪問網路或 Wi-Fi 連線的任務(如向伺服器拉取內建資料) 
* 希望作為一個批次定期執行的許多工

而使用JobScheduler可以很優雅的完成這些情況。

所以相比於其他方式,JobScheduler的好處是顯而易見的。 
* 避免頻繁的喚醒硬體模組,造成不必要的電量消耗。 
* 避免在不合適的時間(例如低電量情況下、弱網路或者行動網路情況下的)執行過多的任務(喚醒硬體)消耗電量;

2)API:
ActivityManager.isBackgroundRestricted()


4、獲取alarm狀態

----------------------------------------------------
當應用設定ALARM的時候,系統不會將這些ALARM在設定的準確時間內觸發,而將用一種批量觸發(batches mode)的策略,這樣可以最小化地使系統從休眠狀態醒來,最低程度地減少電池的消耗,即將一批觸發時間接近的鬧鐘,壓縮到某一個時間段內一起觸發,而不是一個個觸發,這樣系統會很難休眠。

1)dumpsys alarm
---------------
  u0a429:com.oupeng.max.sdk +12s417ms running, 6 wakeups:
    +12s417ms 6 wakes 6 alarms, last -2m34s742ms:
      *walarm*:com.oupeng.max.sdk/com.opera.max.core.web.DataUsageMaintenanceScheduler
  u95a218:com.tencent.mobileqq +5m23s21ms running, 62 wakeups:
    +3m48s334ms 12 wakes 12 alarms, last -27m27s573ms:
      *walarm*:com.tencent.mobileqq.msf.WatchdogForInfoLogin
    +1m27s807ms 25 wakes 25 alarms, last -2m34s742ms:
      *walarm*:com.tencent.mobileqq:MSF_169734965
    +6s2ms 19 wakes 19 alarms, last -57m13s106ms:
      *walarm*:com.tencent.mobileqq:MSF_75405855
    +878ms 6 wakes 6 alarms, last -26m19s973ms:
      *walarm*:com.tencent.mobileqq:MSF_249095114
  u150a196:com.tencent.mm +5m16s304ms running, 57 wakeups:
    +5m6s783ms 0 wakes 54 alarms, last -4m13s106ms:
      *walarm*:ALARM_ACTION(25568)
    +7ms 1 wakes 1 alarms, last -4h18m18s744ms:
      *walarm*:ALARM_ACTION(9884)
    +6ms 1 wakes 1 alarms, last -4h14m30s690ms:
      *walarm*:ALARM_ACTION(30238)
  <AppSync3 Whitelist>
   (AppSync) 10240
   (AppSync) 10499
   (AppSync) 10217
   (AppSync) 10218
   (AppSync) 10222
   (AppSync) 10225
   (AppSync) 10226
   (AppSync) 9510242
   (AppSync) 10228
   (AppSync) 10230
   (AppSync) 10234
   (AppSync) 10237
   (AppSync) 10239
   (AppSync) ---------
   (AppSync) ---------
Suspicious Threshold Time : 10000[millis]
  (AppSync) com.samsung.android.messaging : 300(540)
  (AppSync) com.sec.spp.push : 1200(1200)
  (AppSync) ### 2 added ###
  Fixed Wakeups: true/true/true
  <GmsAlarmManager>
isChinaMode:true
mGmsPkgUid:10030
mVendingUid:10053
mConfigupdaterUid:10014
mWaitCheckNetWork:false
mGoogleNetWork:false
isGmsNetWorkLimt:true
mScreenOn:false
mScreenOffChange:false
deviceIdle:[email protected]
isCharging:false
Since last 24 hours
Total time and # of event Google access is available   : 0h 0m(0X)
Total time and # of event Google access is not possible : 4h 26m(8X)
Total time and # of event VPN is connected :0h 0m(0X)
5、App Standby Buckets
----------------------------------------------------
App Standby Buckets in Android P will help further improve battery life
Battery life has been important for the developers working on Android for the last few releases. This goes beyond the typical “optimized battery life” fluff that we generally see in changelogs. Android has fundamentally changed the way it lets applications run in the background thanks to the Job Scheduler API, the evolution we’ve seen with Doze, and more. This focus isn’t changing with Android P either as noted by Dave Burke at Google I/O this week. One of these new features is being called App Standby Buckets.


The goal of App Standby Buckets is to improve the overall power management of our devices by prioritizing applications into one of four different buckets. Over time, Android will watch and see how frequently you use certain applications and then organize them into one of these buckets based on usage. The operating system will then limit the resources a device allocates to a particular application based on which bucket the application has been placed in.


1)Unplug (or adb shell dumpsys battery unplug)
2)adb shell am get-standby-bucket <package-name>


3)adb shell set-standby-bucket <package-name> <bucket>
buckets:
      10 ACTIVE:App is currently being used
      20 WOEKING_SET:App is in regular use
      30 FREQUENT:App is often used, but not every day
      40 RARE:App is not frequently used


4)API:
UsaheStatsManager.getAppStandbyBucket()

相關推薦

Android策略測試

1、電源測試----------------------------------------------------1)檢視電源狀態:adb shell dumpsys batteryCurrent Battery Service state:  (UPDATES STOPP

Android P 策略BatterySaverPolicy檔案

BatterySaverPolicy 原始碼 frameworks/base/services/core/java/com/android/server/power/BatterySaverPolicy.java 粗略看了下很有作為,感覺是目前5.0、6.0、7.0、8.0中

Android 開發之 JobSchedule

android的電量一直是所有人關注的問題, 電池越來越大,使用起來沒有任何改善,有人覺得是螢幕越來越大導致的,但是實際上更多的是app的不注意,導致的浪費了很多電量。 從本章開始,我們將從開發的角度來告訴大家,如何使我們的應用更加省電的一些技巧。 JobSchedule

一.Android開發之效能優化

  電量優化 Android應用開發中的網路、定位、感測器等都是比較耗電的特性,我們應該正確使用API來有效降低應

2008 R2 輔域安裝和卸載(加域、退域策略測試

主域 輔域 組策略 加域 退域 一、輔域安裝 1、運行——dcpromo 2、向現有域添加域控制器 3、輸入主域域名fdwxyjy.com 4、選擇站點(默認即可,此處wuxi是因為在AD中重命名了) 5、輔域安裝完後重啟,在主域上可以看到原來Domain Contr

Android APP性能專項測試(個人整理)

shel 展現 str traffic 根據 通過 write res targe 移動測試、 Android測試 、APP測試 Android篇 1. 性能測試 Android性能測試分為兩類:1、一類為rom版本(系統)的性能測試2、一類為應用app的性能測試

Android P 開啟模式後拔USB後繼續保持模式

1. 前言 之前一直不知道為什麼老是自動進入省電模式,非常詫異。檢視日誌也沒有直接呼叫PowerManager.setPowerSaveMode。最終發現 adb shell settings get global low_power, 鍵值low_power每次暗屏都是發生改變。一

Android 9.0 (P版本) MTK平臺原生的待機智慧功能

1. 原生介面UI 2. 原始碼檢視 2.1 字串 Z:\9.1\vendor\mediatek\proprietary\packages\apps\MtkSettings_Eclipse\res_ext\values-zh-rCN\mtk_strings.x

Android 手機總是沒?這些訣竅你知道幾個呢?

對於 Android 使用者來說,裝置的續航可能是一個令人困擾的難題。系統開放性帶來多樣樂趣的同時,也會帶來無謂消耗的情況。在使用不當的情況下,多少會出現充電三小時,使用五分鐘的揪心現象。 在不更換手機、保持既定使用頻率的情況下,如何有效省電? 推薦:手機重要資料被誤

Android Vendor Test Suite (VTS) 的概念、作用測試方法--

Android Vendor Test Suite (VTS) 的概念、作用及測試方法 Qidi 2017.08.01 (Markdown & H

Android 6.0的技術Doze作用影響以及避免方法

從android 6.0開始,谷歌引入了兩項新的省電技術延長電池使用時間,分別是Doze(休眠)和App Standby(app待命模式),只要app是執行在6.0(api 23)及以上的系統,無論app編譯時是否使用的target=23,都會受到這兩種技術的限制。 理解

Android 8.1 之模式分析

1. 功能概述 Battery saver是Google在Android L上新增的選項,這個功能是在Setting -> Battery (–> more (androidO以前的路徑)) –> Battery saver,這個功能主要是為

Android Vendor Test Suite (VTS) 的概念、作用測試方法

轉載:http://blog.csdn.net/qidi_huang/article/details/76653677 注意:本文基於 Android 8.0 進行分析 1、前言 - Project Treble   Android 目前有一個比較明顯的缺點是裝置

Android Sprd管理(四)自啟動和關聯啟動管理

自啟動和管理啟動管理介紹 自啟動管理用於管理應用的開機自啟動/後臺自啟動/關聯自啟動。應用自啟動的管理,以包名(應 用名)進行限制,不區分 user(使用者)。 (1)自啟動 指開機自啟動和後臺自啟動。應用可以監聽系統的一些開機廣播,從而在系統開機後自動進行啟動。 同時應用也可以監聽系統的任

Android Sprd管理(三)鎖屏清理

我們接著上篇 Android Sprd省電管理(二)應用省電模式設定流程,講下鎖屏清理的原理 鎖屏清理簡介: 鎖屏清理目的是減少待機應用從而來減少待機功耗。鎖屏清理是在待機一段時間後才開始進行。 該時間值大於 1min。出於功耗考慮沒有采用可喚醒的 alarm 來設定該 1min

Android Sprd管理(二)應用模式設定流程

在Android Sprd省電管理(一)appPowerSaveConfig.xml,我們介紹了appPowerSaveConfig.xml的主要引數的意義,這一篇我們介紹下,怎麼設定應用的各種省電模式 首先看SprdManageApplications這個類 以鎖屏清理為例,點選開關

Android Sprd管理(一)appPowerSaveConfig.xml

原始碼設定路徑 vendor\sprd\platform\frameworks\native\data\etc\appPowerSaveConfig.xml <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <

Android開發筆記(一百一十七)app方略

電源管理PowerManager PowerManager是Android的電源管理類,用於管理電源操作如睡眠、喚醒、重啟以及調節螢幕亮度等等。 PowerManager的物件從系統服務POWER_SERVICE中獲取,它的主要方法如下: goToSleep : 睡眠,即鎖

Android開源專案第四篇:開發測試工具篇

本文為那些不錯的Android開源專案第四篇——開發工具篇,**主要介紹Android開發工具和測試工具相關的開源專案**。 1、Buck facebook開源的Android編譯工具,效率是ant的兩倍。主要優點在於: (1) 加快編譯速度,通過並行利用多核cpu和跟蹤不變資源減少增量編譯時間實現 (2)

迴歸測試策略方法

業界的迴歸測試策略基本上有兩種:   ● 全部迴歸,也就是把之前的所有的測試用例,無論是手動的,還是自動的,全部跑一遍   ● 部分迴歸,定性分析程式碼改動有哪些影響,程式碼改動的檔案/模組和其他的檔案/模組的依賴性,然後選擇被影響到的檔案/模組相應的測試用例來跑一遍