Android应用性能如何优化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou12314/article/details/78419049

一: android程序的优化主要分为4种优化:启动速度方面,UI卡顿方面,内存泄漏方面,内存溢出方面

二:下面依次对这四个方面进行大概介绍

1.启动速度:

不应在Applicati以及Activity的生命周期回调中做任何费时操作,具体指标大概是你在onCreate,onResume,onStart等回调中所花费的总时间最好不要超过400ms,否则用户在桌面点击你的应用图标后,将感觉到明显的卡顿。

特别是在onPause()中,因为根据源码,只有这个Activity的onPause()执行完,下一 个界面onResume()才会执行,onStop(): 便是Activity即将停止,同样不能太耗时
可以在onPostCreate()里面进行执行,因为这时已经完全加载完毕

2.UI卡顿方面:

一般产生原因:

1.布局过于复杂,无法在16ms内完成绘制
2.动画执行次数过多
3.ui线程执行耗时操作
4.view过度绘制,onMesure(),onLayout()执行过于频繁,cpu负载过重
5.频繁创建对象

如何查看布局是否过于复杂:
   打开手机开发者选项,选择调试GPU过度绘制,通过颜色来区别标示过度绘制的情况:

   蓝色1x过度绘制、绿色2x过度绘制、淡红色3x过度绘制和红色超过4x过度绘制

   -----------------------------------

3.内存泄漏方面:

一般产生原因:

1.资源对象没关闭造成的内存泄漏,类似于file读写,Cursor
2.Bitmap对象不在使用时调用recycle()释放内存
3.试着使用关于application的context来替代和activity相关的context
4.注册没取消造成的内存泄漏
5.当集合中有对象,当集合不使用的时候而且没有清除
6.在onTrimMoney()方法中监听当内存吃紧时,关闭一些资源
6.handler创建匿名或内部对象的时候,handler会持有一个外部引用,如果当activity被销毁的时
  候,而handler一般都伴随有耗时操作,导致activity无法被回收,造成内存溢出,一般解决方法就
  是把Handler给设置成静态的,然后在handler内部以弱引用的方法传入一个引用,代码如下:

static class MyHandler extends Handler{

WeakReference<Activity> mWeakActivity;
MyHandler(Activity activity){
    mWeakActivity = new WeakReference<Activity>(activity);
}
@Override
public void handleMessage(Message msg) {
    super.handleMessage(msg);
    String obj = msg.obj.toString();
    Log.e("flag",obj);

}

}

  **可用工具leakcanary检测内存泄漏**

4.内存溢出:

一般产生原因:

      1.   bitmap对象未做压缩,应该对大的图片进行压缩,具体压缩方法参照点击打开链接
      2.   adapter对象中未使用conterview

猜你喜欢

转载自blog.csdn.net/zhou12314/article/details/78419049