性能优化总结

1.卡顿优化

Android系统每隔16ms就触发一次对UI的渲染。如果超过16ms就会卡顿。1.避免过度绘制,减少层级嵌套,

  • 简单布局优先使用LinearLayoutRelativeLayout,尽量使用Linearlayout因为他的onmeasure只执行一次,而Relative执行2次。
  • 复杂布局优先使用constrainLayout
  • 使用includemerge标签提高复用性
  • 使用ViewStub标签延迟加载
    2.不在主线程耗时操作,请求网络数据、操作数据库、读取文件等就不能放在主线程来,可以开启子线程来操作。
    3.recycleview避免频繁刷新,尽量局部刷新。
    Android studio自带的性能分析工具android profiler,查看的 CPU、内存、网络和电池资源使用情况。

2.内存优化(避免内存泄漏和内存溢出和内存抖动)

内存泄漏:1.非静态内部类会持有外部类的实例,Handler thread runnable持有 外部Activity 的强引用,导致 GC 无法对 Activity 进行回收。
2.长生命周期持有短生命周期对象引用导致短生名周期对象无法释放。
3.资源未释放,广播BroadcastReceiver忘了注销 ,创建的bitmap数据库字节流忘了关闭。timer,timerTask等任务栈没有取消。
内存溢出:程序在申请内存时,没有足够的内存空间OOM。
1.做好了内存泄漏自然内存溢出概率就会降低很多。
2.对大量图片对象合理采用软引用弱引用。
3.申请更大的内存。
内存抖动:内存抖动是指在短时间内有大量的对象被创建或者被回收的现象。1.尽量避免在循环体中创建对象。
2.尽量不要在自定义 View 的 onDraw() 方法中创建对象,因为这个方法会被频繁调用
3.对于能够复用的对象,可以考虑使用对象池把它们缓存起来

启动优化

1.闪屏页优化:应用启动加载一个默认的主题,用来去掉应用启动时候的黑/白屏的情况。2. 用第三方库懒加载和intentservice加载:在开发中会用到很多的三方库,如百度定位、图片库执行懒加载。像友盟,bugly这样的业务创建intentservice执行异步初始化。
3.WebView`启动预加载内核。将一些资源文件放在本地的assets目录, 对访问地址进行拦截, 当url地址命中本地配置的url时, 使用本地资源替代, 否则就使用网络上的资源。
引入腾讯x5内核替换原生的浏览器内核

网络优化

使用Gzip来压缩request和response, 减少传输数据量, 从而减少流量消耗。2.选择合适的数据格式:json,xml
3.减少接口数量,使用rxjava操作符flamap和zip合并借口请求。
4.图片加载,使用WebP格式可以大幅节省流量,先显示缩略图,用户点击后再下载原图。
5.检测网络状态,不同网络转态执行不同策略,例如移动网络不加载图片,2G网络只加载标题等。

安装包体积优化

  • 使用lint工具删除无用的资源
  • 简单的切图尽量替换为shape类型的xml文件
  • 对图片进行压缩,优先使用WebP格式图像
  • 使用矢量图(.9)图来实现大小可变的背景图
  • 尽量减少依赖三方库
  • 代码混淆,使用proGuard代码混淆器工具,它包括压缩、优化、混淆等功能。

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