android性能优化

来源:互联网 发布:百慕大三角知乎 编辑:程序博客网 时间:2024/05/24 01:54

bitmap的优化

1.图片转为bitmap的时候google提供的计算图片大小的方式是长乘以宽乘以像素字节数,优化的方式就是通过bitmap提供的工具类减少长和宽,所谓的像素字节数量就是rgb-565 2字节,argb-4444 2字节,argb-8888 4字节,alpha-4 1字节,google默认的是argb-8888,即算出来的大小就是长乘以宽乘以4,所以可以选择小的像素字节来完成优化

2.google提供了一个类就是bitmapregiondecoder来完成不需要将图片加载完成



字符串的优化

字符串的拼接传统的方式就是用+号进行拼接,比较耗时,替代方式是使用stringbuilder的append来代替加号的拼接 可以使用google自带的lint进行代码的规范与优化


UI性能优化工具  Hierarchy Viewer

  1. allprojects {  
  2.     repositories {  
  3.         jcenter()  
  4.         maven { url "https://jitpack.io" }  
  5.     }  

依赖

  1.     compile 'com.github.romainguy:ViewServer:017c01cd512cac3ec054d9eee05fc48c5a9d2de' 

在需要测试的activity中

  1. public void onCreate(Bundle savedInstanceState) {  
  2.         super.onCreate(savedInstanceState);  
  3.         // Set content view, etc.  
  4.         ViewServer.get(this).addWindow(this);  
  5.     }  
  6.   
  7.     public void onDestroy() {  
  8.         super.onDestroy();  
  9.         ViewServer.get(this).removeWindow(this);  
  10.     }  
  11.   
  12.     public void onResume() {  
  13.         super.onResume();  
  14.         ViewServer.get(this).setFocusedWindow(this);  
  15.     }
  

UI的性能优化主要从三方面入手,减少层级关系,使用include,viewstub ,merge等标签
  merge 标签 多用于替换FrameLayout或者当一个布局包含另一个时,<merge/>标签消除视图层次结构中多余的视图组,例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用<merge/>标签优化


线程池:线程池中有一个核心线程池和一个最大线程池的问题,核心线程池就是任务来了后第一批上去干活的线程,假如自定义的任务队列是十,核心线程池中的线程有五个,那么来了十个或者十个以下的任务,这些任务都是由核心线程池中的五个线程来循环完成,假如这时来了十个以上的任务,这个时候就会让最大线程池中的线程来帮忙完成任务,再假如此时来的任务超过了核心线程池加上最大线程池的数量 这个时候程序就会发生崩溃现象线程出问题。
原创粉丝点击