android gpu优化,Android_Android性能优化方法,GPU过度绘制  •打开开 - phpStudy

Android性能优化方法

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,时间复杂度降低一个数量级。相关阅读:

Win10 TH2正式版10586升级会出现哪些问题? 注意事项汇总

Mac开机密码怎么取消?MAC取消开机密码的方法

在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置

asp.net2.0中css失效的解决方法

android 简单图片动画播放的实例代码

HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍

谈一谈javascript中继承的多种方式

Angularjs在初始化未完毕时出现闪烁问题的解决方法分析

详解iOS开发中UIPickerView控件的使用方法

php数组中包含中文的排序方法

html5设计原理(推荐收藏)

PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)

通过Ajax两种方式讲解Struts2接收数组表单的方法

php调用mysql存储过程实例分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值