GPU过度绘制
•打开开发者选型,“调试GPU过度绘制”,蓝、绿、粉红、红,过度绘制依次加深
•粉红色尽量优化,界面尽量保持蓝绿颜色
•红色肯定是有问题的,不能忍受
使用HierarchyView分析布局层级
•删除多个全屏背景:应用中不可见的背景,将其删除掉
•优化ImageView:对于先绘制了一个背景,然后在其上绘制了图片的,9-patch格式的背景图中间拉伸部分设置为透明的,Android 2D渲染引擎会优化9-patch图中的透明像素。这个简单的修改可以消除头像上的过度绘制。
•缩短View层级结构 •删除非必须View,不仅仅能提高帧率还能降低对内存的消耗、同时还能加速应用的启动
•TextView组合图标,代替LinearLayout+TextView+ImageView
•使用mearge标签
•使用RelativeLayout扁平化布局
•特别是ListView item布局,一定要扁平化
不要吝啬发现Android Device Monitor的功能
•Start Method Profiling •可以观察每个线程的方法调用情况,
•可以通过观察,方法的调用次数、每次方法执行时间
•找到有是否死循环,是否为耗时操作
使用LeakCanary发现内存溢出
•在开发阶段一定要集成LeakCanary,而且非常容易集成
•及时发现Activity页面内存溢出地方法
•详细的内存溢出方法跟踪,便于定位异常点
使用lint工具给APK包减肥
使用OneAPM监控App性能
使用SVG代替图片
•需要和设计配合
使用xml代替图片
代码规范制定并遵守
•一致的代码风格,有利于代码维护、查看和发现问题所在
下面在给大家分享Android性能优化一些方法
1.采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated=”true”。不过这个需要在android 3.0才可以使用。
2.View 中设置缓存属性.setDrawingCache为true。
3.优化你的布局。通过Android sdk中tools目录下的layoutopt 命令查看你的布局是否需要优化。
4.动态加载View.采用ViewStub 避免一些不经常的视图长期握住引用。
5.将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null);android的默认背景是不是为空。
6.采用 优化布局层数。 采用来共享布局。
7.查看Heap 的大小。
8.利用TraceView查看跟踪函数调用。有的放矢的优化。
9.cursor 的使用。不过要注意管理好cursor,不要每次打开关闭cursor。因为打开关闭Cursor非常耗时。Cursor.require用于刷新cursor。
10.采用环形Buffer(可以采用链表数据结构实现)。可以设置一个链表长度的上限,根据手势的变化来不断地更新环形Buffer的内容。
11.采用SurfaceView在子线程刷新UI, 避免手势的处理和绘制在同一UI线程(普通View都这样做)。
12.采用JNI,将耗时间的处理放到c/c++层来处理。
13.有些能用文件操作的,尽量采用文件操作,文件操作的速度比数据库的操作要快10倍左右。
14.懒加载和缓存机制。访问网络的耗时操作启动一个新线程来做,而不要再UI线程来做。
15.消息缓存通过handler.obtainMessage复用之前的message。
16.文件IO缓存,使用具有缓存策略的输入流,BufferedInputStream替代InputStream,BufferedReader替代 Reader,BufferedReader替代BufferedInputStream.对文件、网络IO皆适用。例如:
HttpURLConnection con=(HttpURLConnection)url.openConnection();BufferedReader input =newBufferedReader(new InputStreamReader(con.getInputStream()));
Strings;
while((s = input.readLine()) != null) {
}
17.Layout优化:使用抽象布局标签(include,viewstub,merge)、去除不必要的嵌套和View节点、减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具 (hierarchy viewer和lint)。
18.TextView属性优化:TextView的android:ellipsize=”marquee”跑马灯效果极耗性能。
19.使用hashMap代替arrayList,时间复杂度降低一个数量级。
Android 应用性能优化系列 原文链接分别为 : https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE https://www.udacity.com/course/ud825 译者 : 胡凯 Android性能优化典范 Android性能优化之渲染篇 Android性能优化之运算篇 Android性能
ANR ANR全称Application Not Responding,意思就是程序未响应。 出现场景 主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞。 主线程中存在耗时的计算 主线程中错误的操作,比如Thread.wait或者Thread.sleep等 Android系统会监控程序的响应状况,一旦出现下面两种情况,则弹出ANR对话框 应用在5秒内未响应用户的输入事件(如按键或者触摸
本文向大家介绍Android中SparseArray性能优化的使用方法,包括了Android中SparseArray性能优化的使用方法的使用技巧和注意事项,需要的朋友参考一下 之前一篇文章研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试。首先先说一下SparseArray的原理. SparseArray
本文向大家介绍angularjs性能优化的方法,包括了angularjs性能优化的方法的使用技巧和注意事项,需要的朋友参考一下 学习angularjs有一段时间了,但是一直都没有怎么考虑过性能方面的问题,上次在研究过滤器的时候涉及到了性能问题。所以自己也总结了下常用的性能优化。 优化$watch 1.及时移除不必要的watch 2.尽量避免深度watch 我们都知道$watch有三个参数,第三个参
本文向大家介绍react性能优化方案相关面试题,主要包含被问及react性能优化方案时的应答技巧和注意事项,需要的朋友参考一下 重写shouldComponentUpdate来避免不必要的dom操作0 使用 production 版本的react.js0 使用key来帮助React识别列表中所有子组件的最小变化。 参考链接: https://segmentfault.com/a/119000000
一、Android性能优化的方面 针对Android的性能优化,主要有以下几个有效的优化方法: 1.布局优化 2.绘制优化 3.内存泄漏优化 4.响应速度优化 5.ListView/RecycleView及Bitmap优化 6.线程优化 7.其他性能优化的建议 下面我们具体来介绍关于以上这几个方面优化的具体思路及解决方案。 二、布局优化 关于布局优化的思想很简单,就是尽量减少布局文件的层级。这个道
有许多因素影响你的 Web 应用程序的性能。有些是环境, 有些是你的代码,而其他一些与 Yii 本身有关。 在本节中,我们将列举这些因素并解释如何通过调整这些因素来提高应用程序的性能。 优化你的 PHP 环境 一个好的 PHP 环境是非常重要的。为了得到最大的性能, 使用最新稳定版本的 PHP。 PHP 的主要版本可能带来显著的性能提升。 启用字节码缓存 Opcache(PHP 5.5或更高版本)
使用 YOG2 我们可以轻松的实现多种性能优化功能。 压缩 yog2 release --dest dev --optimize # 也可以使用等价缩写 yog2 release -od dev 压缩功能将会对 JavaScript, CSS, PNG 三种资源进行压缩。 MD5戳 在使用 fis 管理了静态资源后,我们可以通过开启 MD5 戳来实现静态资源的强缓存,关于 MD5戳的优点,可