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
- allprojects {
- repositories {
- jcenter()
- maven { url "https://jitpack.io" }
- }
- }
依赖
-
compile 'com.github.romainguy:ViewServer:017c01cd512cac3ec054d9eee05fc48c5a9d2de'
在需要测试的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);
- }
UI的性能优化主要从三方面入手,减少层级关系,使用include,viewstub ,merge等标签
merge 标签 多用于替换FrameLayout或者当一个布局包含另一个时,<merge/>标签消除视图层次结构中多余的视图组,例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用<merge/>标签优化
线程池:线程池中有一个核心线程池和一个最大线程池的问题,核心线程池就是任务来了后第一批上去干活的线程,假如自定义的任务队列是十,核心线程池中的线程有五个,那么来了十个或者十个以下的任务,这些任务都是由核心线程池中的五个线程来循环完成,假如这时来了十个以上的任务,这个时候就会让最大线程池中的线程来帮忙完成任务,再假如此时来的任务超过了核心线程池加上最大线程池的数量
这个时候程序就会发生崩溃现象线程出问题。