美文网首页
Android 优化部分

Android 优化部分

作者: 六比七大 | 来源:发表于2021-04-29 11:55 被阅读0次

    布局优化

    xml层面:变为宽而平的结构
    1、减少过度绘制
    2、使用include、merge、viewStub
    3、constraintLayout约束布局减少层级
    代码层面
    使用自定义view 使用new textview方式避免io和反射
    框架X2C:使用apt技术将xml编译成java代码

    绘制优化

    1、onDraw中不做耗时任务,减少循环
    2、onDraw中不要创建新的局部变量,不仅占内存,还会触发频繁GC (所有线程需要暂停)
    3、减少不必要的invalidate,调用invalidata(left,top,right,bottom)指定刷新区域

    recyclerview优化:
    1、横向rv设置缓存池 rv.setRecycledViewPool(pool)
    2、增大cachesize rv.setItemViewCacheSize(8)
    3、横滑rv高度固定,rv.setHasFixedSize(true)避免requestLayout
    4、不要使用new clickListener,全局创建一个,根据position确定entity

    内存优化

    1、内存泄漏场景
    2、强软弱虚
    3、bitmap injustDecodeBounds inPreferredConfig inbitmap
    4、sparseArray ArrayMap
    5、图片多级缓存
    6、少用装箱
    7、圆角开关
    8、profile页控制5个

    卡顿优化

    1、绘制任务太重,绘制一帧耗时太长
    2、主线程太忙,导致vSync信号到来时还没有准备好数据
    traceview 介绍参照启动优化
    textview优化
    StrictMode严苛模式
    io/网络/Activity泄漏/sqlite泄漏/监测实例数量等
    在日志栏过滤”StrictMode"
    
    sp优化:分多个模块,使用apply
    
    apm
    watch-dog 5s  
    

    启动优化

    1、子线程预创建SplashActivity Newstabactivity
    2、加密模块、数据库初始化、视频播放器sdk、广告sdk等intentservice异步加载;
    日志服务、听新闻sdk,websocket、同步收藏文件夹、主题下载 主线程延时加载idelhandler;
    或者懒加载
    3、splash中减轻布局,使用viewstub
    3、webview优化
    application中预创建webvie,webview首次初始化后,即使 webview 已经释放,但一些webview 共用的全局服务或资源对象仍没有释放,第二次初始化时不需要再生成这些对象从而变快。
    webview复用池,要防止内存泄漏
    activity中webview初始化和本地资源请求同时处理,初始化后取本地请求到的资源
    预置html css框架,通过拦截shouldInterceptRequest方法取本地资源,直接js解析
    4、频道流预加载,快速显示
    5、分进程进行初始化,有些进程比较晚

    systrace  
    Trace.beginSection("--start")  Trace.endSection(--end)  一般设置-t 5s  -b 10240 10M
    
    traceview 主要观察calls + Recur calls/total(该方法调用次数+递归次数)和 cpu time/call(该方法耗时)
    Debug.startMethodTracing("traceview") Debug.stopMethodTracing()  生成文件 Android/data/packagename/files
    
    查看应用启动时间  
    adb shell am start -w com.demo.newsclient/SplashActivity
    ThisTime 最后一个activity启动耗时    TotalTime所有Activity启动耗时(重要:创建进程+Application初始化+Activity显示)   WaitTime AMS启动Activity的总耗时
    

    包体大小

    1、混淆
    2、lint
    3、webp
    4、资源module去重
    5、去掉不必要的So

    相关文章

      网友评论

          本文标题:Android 优化部分

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