Android优化总结

1. 启动优化一般指冷启动的优化,从点击桌面的icon图标到显示页面之间的时间长短
adb shell am start -W 包名/启动activity全包名

查看启动事件;
优化的可操作方法是把第三方的或者不需要马上使用的内容不要在Application的继承类中初始化,可以放到使用的时候初始化或者延迟初始化;
把第三方的初始化延迟后还是很客观的,截图如下

Android优化总结_第1张图片
优化.png
2.UI优化

1、FramLayout和LinearLayout布局相对RelativeLayout绘制简单,但是RelativeLayout减少嵌套;负责布局建议使用ConstraintLayout
2、include和merge搭配使用,减少嵌套并且复用布局文件;ViewStub按需加载,适用于控件在某种状态下不加载
3、移除不居中不需要的背景
4、通过手机选项【显示布局边界】可以查看布局是否存在多余层次绘制

3.绘制优化

主要是针对自定义控件绘制过程中onDraw()方法会多次调用,所以减少方法内的操作
1、减少耗时操作,减少嵌套循环操作
2、减少局部变量,多次调用出现多个临时变量,导致系统更加频繁GC

4.内存优化

GC算法及分区
1、单例或者静态变量持有的对象生命周期小于应用周期,则容易发现内存泄露,特别是持有Activity
2、非静态内部类或者匿名内部类持有外部引用,如果内部类有耗时操作,生命周期大于外部引用周期,则存在内存泄露,可以通过静态内部类或者弱引用处理
关于引用有四种:强引用、软引用、弱引用和虚引用
3、资源未关闭导致的内存泄露
cursor、文件流、手动注册广播、开启服务、EventBus等可以通过leakcanary集成查看
4、主要是编写代码时注意规范;另外通过MAT也可以查看泄露情况

5. 资源优化

1、纯色背景可以使用shape代替Drawable
2、Android可以使用Webp格式的图片可以使用这个格式的图片
3、开启资源压缩,自动删除无用的资源

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }

4、代码混淆 使用proGuard 代码混淆器工具,它包括压缩、优化、混淆等功能

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }

5、插件化,减少包大小

6.RecycleView和Bitmap

1、如果是listView则注意ViewHolder的复用;
2、分页
3、对图片质量和图片尺寸压缩显示

7、微优化

1、常量使用static final
2、使用增强的for循环

你可能感兴趣的:(Android优化总结)