安卓高阶之性能优化全解析(一)

版权声明:如需转载请注明出处 https://blog.csdn.net/zhonglunshun/article/details/80540624

Android性能优化

这篇文章作为Android性能优化的引入,Android的性能优化一直是广大开发者头疼的问题,也是非常重要的一个知识点,这里面涉及到的知识比较多,不知道大家对性能优化了解多少,首先问一下大家,你所知道的性能优化有多少种?

如果是很少关注性能这块的开发者或者初级程序员,可能会一脸懵逼,似曾相识却又回答不上来,稍微有点经验的开发者应该会很容易答出一部分:电量优化,网络优化,图片加载优化,至于具体怎么去优化,面试被问到的时候可能就支支吾吾了。

这些都是比较基础的东西,熟悉这些是做好一个app的前提。如果你现在还不了解,或者了解的不够充分,那么今天就可以跟着我一起学习一下,Android性能优化包括哪些内容,我们应该怎么做性能优化;

性能优化汇总

  • 内存泄露
    内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的,使用完后必须显式释放的内存。
  • 网络及传输优化
    相信大家都有使用App时遇到过小菊花一直转的情况,加载时间一长也是很让人难过的;网络卡顿一般是因为在网络环境较差的情况下请求过多的数据或者请求方式繁琐效率低导致;如果提高传输效率是网络优化的重点,我们可以通过预处理,或者压缩传输数据或者精简传输的数据等相关方式达到优化网络的效果;
    相关的网络优化技术有:Batching批处理技术、Prefetching预取技术、GCMNetworkManager高级实践、Network Traffic Tool工具
  • View的性能优化
    一般说道View的性能优化是说过度绘制,也就是一帧的时间内(16.67ms)像素被绘制了多次,
    性能优化工具的使用,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,也就是我们所说的卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需要尽量减少Overdraw的发生。
  • Bitmap内存优化
    使用Pixel手机拍摄4048x3036像素(1200W)的照片,如果按ARGB_8888来显示的话,需要48MB的内存空间(4048*3036*4 bytes),一般手机分辨率都是低于这个尺寸的,那么我们需要进行一些优化,比如缩放操作,同时我们要尽可能复用这些bitmap对象,因为图片在内存中占用内存空间较大,很容易把内存吃完,通过复用缓存以及内存压缩的形式,节省资源消耗;
  • 安装包优化
    安装包优化主要是从两个方面来优化,精简安装包大小,提高安装包运行效率及安全性;比如去掉一些重复无用的资源,像这个的话有一些工具能实现,比如lint还有极限压缩;而提高运行效率和安全性方面可以通过一些工具,比如
  • 多线程并发性能优化
    我们知道安卓的UI绘制都是放在主线程的,为了让软件运行更流畅,就需要尽可能的把主线程的任务放到子线程,同时使用多线程提高处理效率,这必然会用到多线程,而多线程的使用会伴随一系列问题,如果优化不好会导致效果很差,这些问题包括死锁,过多串行化,过多锁竞争,切换上下文,内存同步;

常见的性能优化的工具

内存优化是安卓性能优化中很重要的一部分,网上也有很多针对内存优化开发的一些工具,比如MAT、LeakCanary、Memory Monitor、Allocation Tracking、Heap Tool、TraceView、hierarchyviewer布局检测工具

那么我们接下来会和大家分享一下,怎么样做内存优化;

猜你喜欢

转载自blog.csdn.net/zhonglunshun/article/details/80540624
今日推荐