网站手机版,广州免费技能培训班,wordpress主题设置,网络域名多少钱一年目录
引言#xff1a;
APP优化#xff1a;
网络优化#xff1a;
内存优化#xff1a;
卡顿优化#xff1a; 引言#xff1a;
先大概对Android性能优化做一个简单分类和梳理。由于性能影响因素多#xff0c;比如本文分类的APP#xff0c;内存#xff0c;网络
APP优化
网络优化
内存优化
卡顿优化 引言
先大概对Android性能优化做一个简单分类和梳理。由于性能影响因素多比如本文分类的APP内存网络卡顿都是互相影响的。卡顿应该是用户最直观可见的性能问题了。
APP优化侧重于启动UI绘制以及资源优化这三个方面考虑
内存优化侧重于内存抖动内存泄露扩大内存方面考虑
网络优化则是从网络请求数据压缩的方面考虑
上面这三个方面的优化就有利于我们系统卡顿问题的解决。刚才说的卡顿是用户直观感知的从显示的角度看卡顿问题的话就是丢帧掉帧引起的。本篇暂时不展开与显示刷新原理方面的内容说明。 APP优化 UI优化布局优化绘制优化 布局优化RelativeLayout替代LinearLayout作为默认根布局。降低嵌套布局提高渲染效率 include标签 ViewStub标签加载不常用的布局延迟加载 merge标签减少布局的嵌套层次 安装包优化res资源文件优化 减小体积 res资源优化 代码优化 lib资源优化 assets资源优化 代码混淆 使用proGuard代码混淆工具包括压缩优化混淆等功能 插件化功能模块放入服务器需要时再加载 启动优化 冷启动热启动耗时线程用子线程去执行 启动逻辑加载逻辑 非必要的对象可以延迟初始化 不要创建全局静态对象而是转向单例模式这样应用进程只需要第一次时初始化 考虑依赖注入框架
网络优化 合并网络请求减少网络请求 避免DNS解析 大量的数据加载采用分页的方式 网络数据采用GZIP压缩 加入网络数据缓存避免频繁请求网络 上传图片时在必要的时候压缩图片
内存优化 避免内存泄露长生命周期的对象引用了短生命周期的对象。堆上分配的对象已经不再使用了但是GC收集器无法对其进行回收。 静态变量问题将内部类设为静态内部类或独立出来使用context.applicationContext() 单例模式:传参context.getApplicationconText() 属性动画:Activity.onDestroy调用Animation.cancel() Handler:使用静态内部类WeakReference弱引用当内部类结束生命周期时清空消息队列 线程问题将AsyncTask和Runnable设为静态内部类或独立出来在线程内部采用弱引用保存Context引用 资源未关闭在Activity销毁时即使关闭或者注销 BroadcastReceiver调用unregisterReceiver() Cursor,Stream,file:调用close Adapter问题 不使用缓存而只依靠getView()每次重新实例化Item会给GC制造压力 在构造Adapter时使用convertView WebView问题webView和Activity在同一线程 集合问题map等有静态引用没有做删除操作 扩大内存清单文件中Application添加 largeHeap“true”属性同一个应用开启多个进程来运行这样可以增大应用的总内存空间 卡顿优化 不要在主线程进行网络访问或者大文件IO操作 优化布局 优化绘制避免不必要的重绘以及过度绘制 onDraw不要创建新的局部对象。 onDraw方法不要做耗时操作