项目开发完毕后,然后就是优化,怎么优化呢,我是先从ui方向优化。

###第一种 Overdraw的检测

手机里面就能打开测试,设置 -> 开发者选项 -> 调试GPU过度绘制 -> 显示GPU过度绘制,从字面意思就可以看到,它是查看绘制过程中过度绘制严重程度。

打开后会发现有多种颜色,每种颜色代表不同的过度绘制程度。

那么如果你发现你的app上深红色的色块比较多,那么可能就要注意了。

怎么处理呢?

  • (1)布局程度的调整,如果在布局中重复设置 background,就会出现过度绘制,例如,在设置列表listview背景为白色,background=“white”,但是想让条目也为白色,设置background为白色,这样就造成了过度绘制

  • (2)使用中设置background,例如在设置imageview的时候先设置一个预显示background,然后再设置

  • (3)自定义View中有些图片要叠加使用,就会造成过度绘制,使用clipRect能解决这类型问题。

###第二种 Hierarchy Viewer 减少不必要的且套

Android studio中有
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VOJS6zz-1593140247187)(http://i.imgur.com/A2bdISH.png)]

Android的官方文档中,有这么一句话:

出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器

romainguy在github上有个项目ViewServer,可以下载下来导入到IDE中,里面有个ViewServer的类,类注释上也标注了用法,在你希望调试的Activity以下该三个方法中,添加几行代码:

  public class MyActivity extends Activity {      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          // Set content view, etc.          ViewServer.get(this).addWindow(this);      }              public void onDestroy() {          super.onDestroy();          ViewServer.get(this).removeWindow(this);      }          public void onResume() {          super.onResume();          ViewServer.get(this).setFocusedWindow(this);      }  }

经验:一个是Linearlayout嵌套的,一个是RelativeLayout的。Linearlayout的版本相对RelativeLayout的版本要慢很多(请多次点击Profile Node取样)。即可说明RelativeLayout的版本更优于Linearlayout的写法,并且Hierarchy Viewer可以帮助我们发现类似的问题。

第三种 Android标签的优化

如果在一个项目中需要用到相同的布局设计,可以通过 标签来重用layout代码,
这样可以多次引用一个布局片段而不用重复的复制、粘贴。通过include标签也可以覆写一些属性的值,

标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。多用于替换FrameLayout或者当一个布局包含另一个时,标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用标签优化。

标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局想进度条、显示错误消息等可以使用标签,以减少内存使用量,加快渲染速度。是一个不可见的,大小为0的View。

更多相关文章

  1. Android开发的硬件加速
  2. android中使用okhttp实现文件上传
  3. Android绘制文本基本概念之- top, bottom, ascent, descent, bas
  4. 啥是佩奇?打造Android界佩奇
  5. Android(安卓)MVC模式实例(一)
  6. 安卓ScrollView总结
  7. Android(安卓)ApiDemo分析(九)--Graphics
  8. Android通知管理(NotificationManager)的使用,包括震动,led闪屏
  9. [转]android 修改ramdisk.img和init.rc && android启动后设置/da

随机推荐

  1. Android(安卓)MaterialList源码解析
  2. 如何在XML设定android控件的颜色(十六进制
  3. Android(安卓)opencore
  4. [置顶] Android中的Activity生命周期
  5. Android实现网易新闻客户端首页效果
  6. Android四种Activity的加载模式
  7. Android中使用响应式编程RxJava
  8. Android反编译工具Apktool使用
  9. Android四种Activity的加载模式
  10. 修改frameworks源码去掉android的下拉通