博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
应用前台省电秘籍——这些常见功耗雷坑不要再跳了
阅读量:5916 次
发布时间:2019-06-19

本文共 1320 字,大约阅读时间需要 4 分钟。

使用应用时,有时会出现掉电快、卡顿、过度发热等问题,影响用户体验的同时,也严重影响了应用使用时长和用户留存,如何解决上述问题?本文华为显示流程功耗优化专家王文华将分享议题——低功耗前台显示。

手机器件包括SOC、TP、Modem、GPS、Audio、Camer等主要器件,这些器件在使用时对功耗的影响比较大。

image

上图展示的是不同器件对手机功耗带来的影响,下文将通过从主流应用中发现的问题实例,对应用功耗产生影响的设计因素展开介绍。

视图设计

image

许多应用存在无效刷新、多元素同时刷新等问题,导致数据运算量增加,出现过度占用手机CPU、GPU资源的情况,引起应用耗电增加,部分应用还会出现卡顿现象。

建议:

1)尽量减小绘制窗体的面积。

2)减少多个元素同时刷新。

3)减少距离较远的元素同时刷新。

以上建议减少应用在刷新状态下的数据量,减少数据对带宽、CPU、GPU的占用,无形中节省了功耗,提升了应用性能。

图层优化

image

在全屏界面下,有些应用的界面图层非常多,究其原因是开发者没有将Activity销毁,导致图层合成的工作量很大,过度占用GPU资源,导致卡顿、显示效果差,同时功耗增大。

建议:图层数量控制在3个以下。

不需要GPU处理的组件减少耦合

有些视频类应用的视频流会采用SurfaceTexture或TextureView进行处理,常常出现GPU对界面重新绘制、重复工作的问题,部分场景可能存在时序变化,导致功耗增加,并发生卡顿。

建议:视频场景不要使用GPU重绘。

视频解码

应用有两种解码方式:硬解码和软解码。

image

软解码是纯粹依靠CPU来进行解码的一种方式,视频清晰度越高,CPU负载就越重,容易导致CPU能力不足出现卡顿,耗电量增加。

建议:使用硬解码,对于高清视频播放类应用的性能、功耗均有保障。

数据请求:

image

视频播放类应用在线播放需要提前预缓存视频资源,应用如果频繁发出网络请求,缓存过程的频繁交互就会导致对CPU等资源占用过度,耗电量增加。

建议:大数据块的集中下载既能满足用户体验又能有效降低WIFI功耗和负载,下载完成后可在间隔一段时间内保持Sleep状态。

布局与绝对坐标解耦

应用在不同分辨率的屏幕下显示时,如果使用绝对坐标会造成应用部分场景显示偏移,效果无法保障的问题。

建议:

1)应用布局时,在使用wrap_content、match_parent 和dp 单位为 XML 布局文件中的视图定义 android:layout_width 和 android:layout_height 时,可确保应用视图在当前设备屏幕上提供适当尺寸。

2)应用编码时请勿使用硬编码像素值,固定像素值将导致应用在不同密度的屏幕上出现布局错误。

3)建议应用不要使用AbsoluteLayout 布局,AbsoluteLayout 强制应用使用固定位置放置子视图,影响应用显示效果。

4)在使用尺寸和密度特定资源时,尽管系统会根据当前屏幕配置扩展布局,但在不同屏幕尺寸上,应用可能需要调整UI以及提供针对不同密度优化的可绘制对象。(指在资源目录中针对不同密度的资源进行定义)

关注安卓绿色联盟公众号,回复关键词"2305"获取PPT

转载地址:http://yjwvx.baihongyu.com/

你可能感兴趣的文章
C++ ssd5 12 optional exercise2
查看>>
如何调用带返回值类型的函数
查看>>
linux网络编程涉及的函数
查看>>
数据表的相关操作
查看>>
POJ 2594 Treasure Exploration(最小可相交路径覆盖)题解
查看>>
数据挖掘十大经典算法
查看>>
ArcGIS API for Silverlight 调用GP服务加载等值线图层
查看>>
CentOS系统rsync文件同步 安装配置
查看>>
LogStash配置、使用(三)
查看>>
SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
查看>>
Chrome应用技巧之颜色拾取
查看>>
Linux之通配符
查看>>
ios中摄像头和图片调用
查看>>
Content Provider 基础 之URI
查看>>
管理表空间和数据文件——使用OMF方式管理表空间
查看>>
ios获取安装的app
查看>>
Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法...
查看>>
第一个版本
查看>>
JSTL I18N 格式标签库 使用之二_____读取消息资源
查看>>
聊聊NettyConnector的start及shutdown
查看>>