diff options
author | 2016-09-30 22:33:02 +0000 | |
---|---|---|
committer | 2016-09-30 22:33:02 +0000 | |
commit | 7ce4fbcc1840f74b1e3b49d8c9bf24f0d8ad0875 (patch) | |
tree | 5584dfddf6b45fe1a57eb2a8874d9582db15cd68 | |
parent | ca83b0eb0f74977bdfade060628a96a436bd69cb (diff) | |
parent | 9c84b417edfc001fbeb7f79ccc830250801862a8 (diff) |
Docs: New "Power" area for "Performance" section on DAC. am: b202c67b00 am: 1c9731be87
am: 9c84b417ed
Change-Id: Icf640c744a3cdd59eaea7fc26e67b471d48ca5bf
-rw-r--r-- | docs/html/topic/performance/_book.yaml | 51 | ||||
-rw-r--r-- | docs/html/topic/performance/power/index.jd | 125 |
2 files changed, 156 insertions, 20 deletions
diff --git a/docs/html/topic/performance/_book.yaml b/docs/html/topic/performance/_book.yaml index e053a2c1bdfe..6da92796dc9f 100644 --- a/docs/html/topic/performance/_book.yaml +++ b/docs/html/topic/performance/_book.yaml @@ -1,25 +1,38 @@ toc: -- title: Reducing Network Battery Drain - path: /topic/performance/power/network/index.html +- title: Optimizing for Battery Life + path: /topic/performance/power/index.html path_attributes: - name: description - value: Access the network while going easy on battery life. + value: Learn to make your app more battery-friendly. section: - - title: Collecting Network Traffic Data - path: /topic/performance/power/network/gather-data.html - - title: Analyzing Network Traffic Data - path: /topic/performance/power/network/analyze-data.html - - title: Optimizing User-Initiated Network Use - path: /topic/performance/power/network/action-user-traffic.html - - title: Optimizing Server-Initiated Network Use - path: /topic/performance/power/network/action-server-traffic.html - - title: Optimizing General Network Use - path: /topic/performance/power/network/action-any-traffic.html -- title: Implementing Doze - path: /training/monitoring-device-state/doze-standby.html - path_attributes: - - name: description - value: Help ensure the device isn't depleting the battery when not in use. + - title: Network Use and Battery Consumption + path: /topic/performance/power/network/index.html + section: + - title: Analyzing Data Traffic + path: /topic/performance/power/network/analyze-data.html + - title: Optimizing User-Initiated Network Use + path: /topic/performance/power/network/action-user-traffic.html + - title: Optimizing Server-Initiated Network Use + path: /topic/performance/power/network/action-server-traffic.html + - title: Optimizing General Network Use + path: /topic/performance/power/network/action-any-traffic.html + - title: Smaller Network Resources + path: /topic/performance/power/smaller-resources.html + - title: Doze and App Standby + path: /training/monitoring-device-state/doze-standby.html + path_attributes: + - name: description + value: Help ensure the device isn't depleting the battery when not in use. + - title: Battery Historian + path: /topic/performance/power/battery-historian.html +- title: Reducing Overdraw + path: /topic/performance/overdraw.html +- title: Using the Profile GPU Tool + path: /topic/performance/profile-gpu.html +- title: Intelligent Job-Scheduling + path: /topic/performance/scheduling.html +- title: Reducing Image Download Sizes + path: /topic/performance/network-xfer.html - title: Launch-Time Performance path: /topic/performance/launch-time.html - title: Better Performance through Threading @@ -28,7 +41,5 @@ toc: path: /topic/performance/optimizing-view-hierarchies.html - title: Background Optimization path: /topic/performance/background-optimization.html -- title: Intelligent Job-Scheduling - path: /topic/performance/scheduling.html - title: Reducing APK Size path: /topic/performance/reduce-apk-size.html diff --git a/docs/html/topic/performance/power/index.jd b/docs/html/topic/performance/power/index.jd new file mode 100644 index 000000000000..88addcea1f71 --- /dev/null +++ b/docs/html/topic/performance/power/index.jd @@ -0,0 +1,125 @@ +page.title=Optimizing for Battery Life +page.metaDescription=Learn how to help your app go easier on the battery. + +meta.tags="performance" +page.tags="performance" + +@jd:body + +<div id="qv-wrapper"> + <div id="qv"> + <h2> + In this document + </h2> + <ol> + <li> + <a href="#lazy">Lazy First</a> + </li> + <li> + <a href="#features">Platform Features</a> + </li> + <li> + <a href="#toolery">Tooling</a> + </li> + </ol> + </div> +</div> + +<p>Battery life is the single most important aspect of the mobile user +experience. A device without power offers no functionality at all. +For this reason, it is critically important that apps be as respectful of +battery life as possible.</p> + +<p>There are three important things to keep in mind in keeping your app +power-thrifty:</p> +<ul> +<li>Make your apps <em>Lazy First</em>.</li> +<li>Take advantage of platform features that can help manage your app's battery +consumption.</li> +<li>Use tools that can help you identify battery-draining culprits.</li> +</ul> + +<h2 id="lazy">Lazy First</h2> + +<p>Making your app Lazy First means looking for ways to reduce and optimize +operations that are particularly battery-intensive. The core questions +underpinning Lazy First design are: + +<ul> + + <li><strong>Reduce:</strong> Are there redundant operations your app can cut +out? For example, can it cache downloaded data instead of repeatedly waking + up the radio to re-download the data?</li> + + <li><strong>Defer:</strong> Does an app need to perform an action right + away? For example, + can it wait until the device is charging before it backs data up to the + cloud?</li> + + <li><strong>Coalesce:</strong> Can work be batched, instead of putting the + device + into an active state many times? For example, is it really necessary for + several dozen apps to each turn on the radio at separate times to send + their messages? Can the messages instead be transmitted during a + single awakening of the radio?</li> +</ul> + +<p> +You should ask these questions when it comes to using the CPU, +the radio, and the screen. Lazy First design is often a good way +to tame these battery killers. +</p> + +<p> +To help you achieve these and other efficiencies, the Android platform +provides a number of features to help maximize battery life. +</p> + +<h2 id="features">Platform Features</h2> + +<p> +Broadly speaking, the Android platform provides two categories of help +for you to optimize your app's battery use. First, it provides several +APIs that you can implement in your app. You can learn more about these APIs in +<a href="/topic/performance/scheduling.html">Intelligent Job Scheduling</a> +and <a href="/performance/power/network/index.html"> +Network Use and Battery Consumption</a>. +</p> + +<p> +There are also internal mechanisms in the platform to help conserve +battery life. While they are not APIs that you implement programmatically, +you should still be aware of them so that your app can leverage them +successfully. For more information, see +<a href="/training/monitoring-device-state/doze-standby.html">Doze and +App Standby</a>.</p> + +<p> +You can get even more benefit out of these features by using the tools +available for the platform to discover the parts of your app that consume +the most power. Finding what to target is a big step toward +successful optimization. +</p> + +<h2 id ="toolery">Tooling</h2> + +<p>There are tools for Android, including +<a href="/studio/profile/dev-options-rendering.html">Profile GPU Rendering</a> +and <a class="external-link" +href="https://github.com/google/battery-historian">Battery Historian</a> +to help you identify areas that you can optimize for better battery life. +Take advantage of these tools to target areas where you can apply the +principles of Lazy First. +</p> + +<section class="dac-section dac-small" id="latest-games"><div class="wrap"> + <h2 class="norule" style="margin:0 0">More resources</h2> + <div class="resource-widget resource-flow-layout col-16" + data-query="collection:develop/performance/landing" + data-sortOrder="random" + data-cardSizes="6x6" + data-maxResults="24" + data-items-per-page="24" + data-initial-results="3"></div> + </div> +</section> |