美文网首页
Android优化总结

Android优化总结

作者: 刺客的幻影 | 来源:发表于2019-08-10 14:32 被阅读0次

    好记性不如烂笔头,这篇文章主要用来记录一下自己开发过程中使用到的优化方法

    内存优化

    工具

    熟练常用:Lint、Android Profiler、LeakCanary
    不常用:MAT

    案例
    1. 内部类持有外部类引用(WebSocket、Handler)https://www.jianshu.com/p/facb562b02c9

    2. Retrofit轮询认证结果,接口变动导致无法满足轮询停止条件,Activity关闭也无法释放内存,需要bindToLifecycle

    3. 静态变量持有对象引用(Activity)

    4. 数据库cursor使用受调用close

    5. WebView内存泄漏,可为WebView指定新进程,退出时杀掉进程System.exit(0)

    布局优化

    工具

    GPU过渡渲染、HierarchyViewer、Lint

    案例
    1. 使用include标签重用布局
    2. 使用merge标签减少层级嵌套
    3. 使用ConstraintLayout减少层级,但是复杂布局可维护性差,可读性弱,需要灵活配套LinearLayout、RelativeLayout一起使用
    4. 使用HierarchyViewer检查Measure、Layout、Draw的耗时
    5. 使用drawableLeft...来简化布局,达到相同的效果
    6. LinearLayout的效率比RelativeLayout高,RelativeLayout慢于LinearLayout是因为它会让子View调用2次measure过程,而LinearLayout只需一次,但是有weight属性存在时,LinearLayout也需要两次measure

    包体瘦身

    工具

    Lint、pngquant

    案例
    1. 使用Lint检测无用资源文件并删除,尤其是图片资源
    2. 使用pngquant进行图片压缩,压缩率高达70%,失真率低,使用方式:sh PNGCompress PATH/TO/YOUR/RES
    3. 少用大图,能自己绘制的就自己绘制,比如用自定义shape做背景
    4. 去掉功能重复的依赖库,比如Glide和Picasso
    5. release包使用shrinkResource和minifyEnabled
      release {
                signingConfig signingConfigs.dcoin
                jniDebuggable false
                debuggable false
                zipAlignEnabled true
                shrinkResources true
                minifyEnabled true
                proguardFiles './proguard-rules.pro', './proguard-android.txt'
            }
    

    相关文章

      网友评论

          本文标题:Android优化总结

          本文链接:https://www.haomeiwen.com/subject/oplrjctx.html