Android性能优化

来源:互联网 发布:java开源推荐框架 编辑:程序博客网 时间:2024/06/16 06:30

Android UI 渲染机制

1.要求尽量将系统每次渲染的时间控制在16ms之内。如果不能够在16ms内完成渲染的话有可能造成丢帧的现象,即当前该重绘的帧被未完成的逻辑阻塞。
2.避免Overdraw,Overdraw过度的绘制会浪费很多的CPU、GPU资源
3.优化布局层级,优化布局的第一个方法就是–降低View树的高度。建议View树的高度不超过10层。
4.避免嵌套过多无用的布局。可以使用标签重用Layout。
还可以使用实现View的延迟加载,和设置View.GONE这种方式隐藏一个View的共同点是,在初始时不会显示,但是只有在显示时,才去渲染整个布局,而GONE,在初始化布局树的时候就已经添加在布局树上了,相比而言标签的布局具有更高的效率。

内存优化

由于android应用的沙箱机制,每个应用所分配的内存是有限制的。内存太低就会触发LMK——LOW Memory Killer机制。内存是指手机的RAM。
1.寄存器(Registers)
速度最快的存储场所,因为寄存器位于处理器内部,在程序中无法控制。
2.栈(Stack)
存放基本类型数据和对象的引用,但对象本身不放在栈中,而是存放到堆中。
3.堆(Heap)
堆中用来存放又new创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器(GC)来管理。
4.静态存储区域(static field)
静态存储区域就是指在固定的位置存放应用程序运行时一直存在的数据,java在内存中专门划分了一个静态存储区域来管理一些特殊的数据变量如静态的数据变量。
5.常量池(Constant Pool)
JVM虚拟机必须为每一个被装载的类型维护一个常量池,常量池就是该类型所用到的常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段和方法的符号引用。
其中最容易搞混的是栈和堆的区分,每当定义一个变量,java虚拟机就会在栈中为该变量分配内存空间,当该变量的作用域结束后,这部分内存空间就会马上被作用新的空间进行分配。而如果使用new的方式创建一个变量,那么就会在堆中为这个对象分配内存空间,即使该对象的作用域结束,这部分内存也不会立即被回收,而是等待系统GC进行回收,堆的大小随着手机的不断发展而不断变大。

0 0