检测和解决Android应用的性能问题

检测和解决Android应用的性能问题

ID:38589727

大小:281.50 KB

页数:9页

时间:2019-06-15

检测和解决Android应用的性能问题_第1页
检测和解决Android应用的性能问题_第2页
检测和解决Android应用的性能问题_第3页
检测和解决Android应用的性能问题_第4页
检测和解决Android应用的性能问题_第5页
资源描述:

《检测和解决Android应用的性能问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、无论你的应用多么有创新性、有用,如果它卡得要命,或者非常消耗内存,那么每人将会愿意使用它。因此,性能变得尤为重要。当你忙碌于构建精美的用户界面或者完成新的特性时,你可能容易忘却掉一些性能相关的事情。这也是为什么有GooglePlay的应用审核机制的原因之一。这篇文章中,你会看到每个Android工程师需要了解的一些性能问题。你将会学会使用AndroidSDK提供的、已安装在你的设备中的工具来测试这些问题是否发生在你自己的应用中。如果在你的应用中发现了一个性能问题,你肯定会想修复它。我们还会看一看

2、如何使用AndroidSDK工具来获取更多关于那些没有覆盖到的性能问题的相关信息。一旦你有了这些信息,你将会对如何提升应用性能有一个更深刻的理解,并且能够构建出让用户喜爱的App。过度绘制步骤1:问题描述你应用的用户界面是连接用户的纽带,但是创建漂亮的界面只是挑战的其中一面,你还需要确保用户界面流畅的运行。一个常见的问题就是用户界面卡顿,出现这种情况的原因可能是overdraw。Overdraw是屏幕上的某个像素在同一帧的时间内被绘制了多次。例如,想象一下一个有蓝色的背景文本,Android不仅

3、会绘制对用户可见的蓝色区域,而是会绘制整个蓝色的背景以及上面的文本。这意味着一些像素会被两次绘制,这就是过度绘制。一些如上述例子所说的过度绘制示例是不可避免的。然而,过多的多度绘制会引发明显的性能问题,因此你必须将过度绘制的可能性降到最小。检测应用中的过度绘制相对来说比较简单。大量的过度绘制会引出其他用户界面相关问题,例如视图层级过于复杂等。基于这些原因,当你测试你的App的性能问题时,从过度绘制开始是一个明智的选择。步骤2:检测过度绘制好消息是你的Android设备上已经内置了检测过度绘制的工

4、具。因此你需要做的第一步就是安装你要测试的App到你的设备中。然后打开设置页面,选择开发选项(DeveloperOptions)->调试GPU过度绘制(DebugGPUOverdraw),然后选择“显示过度绘制区域(Showoverdrawarea)”。如下图所示。这个工具使用色块来代表不同数量的过度绘制。剩下的事情就是启动你要测试的应用,然后观察它的过度绘制情况。没颜色:没有过度绘制,也就是说一个像素只被绘制了一次。蓝色:过度绘制了一次,也就是一个像素点被绘制了两次。绿色:过度绘制了2次.也就

5、是一个像素点被绘制了三次,通常,你需要集中精力优化过度绘制次数大于等于2次的情况。浅红色:过度绘制3次。这取决于你的应用,小范围的3次过度绘制可能是不可避免的,但是如果你看到了中等或者大量的红色区域那么你就需要查找出现这个问题的原因了。深红色:过度绘制4次,像素点被绘制了5次,甚至更多次。出现这种问题你绝逼要找到原因,并且解决它。步骤3:最小化过度绘制一旦你发现了某个区域有严重的过度绘制,最简单的方法就是打开你应用的xml文件找到过度重叠的区域,特别是那些不可见的drawable对象和被绘制在其

6、他控件上的背景,以此来降低这些地方的过度绘制。你也应该查找那些背景属性设置为白色,并且它的父视图背景也设置为白色的区域。所有这些都会引起严重的过度绘制。Android系统能自动的降低一些简单的过度绘制,但是这些对于复杂的自定义View并没有什么价值,因为Android不会知道你如何绘制你的内容。如果你在App中使用了复杂的自定义View,你可以为使用clipRect函数为你的视图定义可绘制区域的边界。更新相关信息可以参考officialAndroiddocumentation.##2.Andro

7、id图形渲染步骤1:问题描述另一个常见的性能问题就是应用的视图层级。为了渲染每个视图,Android都会经历这三个阶段:测量布局绘制花在这三个阶段的时间与View层级中的View的数量成正比,这就意味着降低App渲染时间的最简单的方法就是识别和移除那些并没有什么卵用的UI元素。即使在你的视图层级上的所有View都是必须的,不同的布局方式也可能对测量过程产生重要的影响。通常来说,你的视图层级越深,花在测量视图的时间就越长。在视图渲染期间,每个View都要向它的父View提供它自己的尺寸。如果父vi

8、ew发现了任意一个尺寸问题,那么它会强制要求所有的子视图重新测量。即使没有错误发生,重新测量也可能出现。例如,为了正确的进行布局RelativeLayout通常会对它们的子视图进行两次测量。子视图使用了layout_weight属性的LinearLayout也会对它的子视图进行两次测量。这些都取决于你的布局方式,测量和重新测量的代价非常昂贵,它会严重影响你的渲染速度。确保你的用户界面渲染流畅的关键就是移除任何非必须的View以及减少你的View层级。HierarchyViewer是一个能够将你完

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。