因为手机CPU和内存受到限制,过多使用内存会可能会导致内存溢出、过度使用CPU可能会导致手机卡顿,从而出现了我们的性能优化
性能优化呢首先从两发面着手,分别是布局优化和内存优化,下面我们先说一下布局优化:
1布局优化简单说就是能复用的就复用,这样可以减少没必要的Id 从而在R文件中占用没必要的空间
2如果当前页面的布局很繁琐,涉及到布局层级过多,建议使用RelativeLayout(相对布局)
如果布局层级少,就是用LinearLayout(线性布局)
布局优化的原理就是,布局层级少、绘制的工作量少、绘制速度快、性能提高、从而达到理想的效果。
接下来说一下内存的优化:
内存优化分为 内存泄漏的优化,BitMap的优化,ListView的优化,和线程优化。
我们写的单例模式(咱们通常引用的Activity的上下文,单例模式的类是静态类,当Activity销毁的时候,这个静态类还保持着Activity的引用,这就造成GC无法回收从而造成内存泄漏)
解决方法:把咱写的App 中的Activity上下文,在OnPuse()方法里面将其致null 即可
Bitmap对图片的一个压缩的优化,主要就是通过Options计算出二次采样率然后设置inSampleSize属性按几倍进行压缩,从而得到图片的一个优化。对Bitmap"对象"的优化使用inBitmap的主要作用是复用之前bitmap在内存中申请的内存,其实这是对象池的原理,以解决对象频繁创建再回收的效率问题。(inBitmap只能在3.0以后使用。
3.属性动画导致内存泄漏 (在android3.0 Google 提供了属性动画),动画播放完之后, 尽管我们看不到动画的播放效果,但在内部处于无限循环播放的状态。
解决办法:解决方法就是在onDestory或动画结束监听中调用animator.cancle()
.集合对象没有清理导致的内存泄漏,我们通常把一些对象的引用加入到了集合中,当我们不需要该对象时,如果没有把它的引用从集合中清理掉,这样这个集合就会越来越大。
5.资源对象没有手动关闭或处理,资源性对象(BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap)导致的内存泄漏。