简单了解Android性能优化方向及相关工具

 更新时间:2020年08月06日 11:41:40   作者:志不坚者智不达  
这篇文章主要介绍了简单了解Android性能优化方向及相关工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

开发一款性能优良的应用是每一个Android开发者都必须经历的挑战。在移动端资源有限的前提下,提高应用的性能显得尤为重要。常见的提高APP性能的优化方向有三个:布局和渲染优化、内存优化、功耗优化。

一:布局优化

所谓布局优化,就是尽量减少布局的嵌套层级,减少无用的布局。主要的优化方法有:

(1)优先使用RelativeLayout来减少布局嵌套层数,否则尽量使用LinearLayout。这是因为RelativeLayout能够在不嵌套的情况下完成复杂的布局,而当布局比较简单时优先使用LinearLayout提高性能。

(2)使用include标签来重用布局,使用merge标签来合并布局。

(3)使用ViewStub来实现视图的动态加载,仅当使用的时候才去加载它。

(4)精简布局,删除无用的布局等。

布局优化常用的工具有:Hierarchy Viewer等。

二:渲染优化

渲染优化主要就是提高渲染的速度,避免过度绘制,从而减少画面卡顿。主要优化方法有:

(1)通过布局优化减少布局层级,提高布局的绘制速度。

(2)当同一帧的像素点被绘制多次时,就会产生过度绘制问题(OverDraw),导致资源被浪费,因此需要避免过度绘制。

(3)系统每16ms会发送一次同步信号,进行UI渲染,如果每次都能渲染成功,就能使FPS达到60,从而使用户感觉不到画面卡顿。这就要求onDraw()方法中不能做耗时的逻辑。

绘制优化常用的工具有:开发者选项里的GPU呈现模式分析、调试GPU过度绘制等。

三:内存优化

内存优化最主要的就是避免内存泄漏。常见的内存泄漏有:

(1)使用Static将属性或控件定义为静态的

1)在Activity类里有一个Activity的静态成员变量引用了该Activity实例,由于静态成员生命周期长,从而导致Activity实例需要被GC时由于该实例被引用导致无法被回收。解决方法为在Activity的onDestroy()方法里将该成员变量赋为Null。

2)如果View定义为静态的,由于View持有Activity的context,同样会造成内存泄漏。解决方法为回收Activity实例时同时调用View的onDestroy()方法释放该View。

(2)非静态内部类、匿名内部类造成内存泄漏

由于非静态内部类和匿名内部类默认持有外部类的强引用,当内部类的生命周期比外部类长时就会造成内存泄漏。常见的例子比如Handler内部类造成内存泄漏等。解决方法为将内部类定义为静态的,因为静态内部类没有外部类的引用。如果内部类要访问外部类的成员,可以通过弱引用的方式。

常用的检测内存泄漏工具有:Leakcanary、MAT等。

四:功耗优化

功耗优化主要是减少应用的耗电量,减少不必要的网络请求等。

五:其他优化

比如减小安装包体积,在UI线程避免耗时操作等等。

六:其他优化工具

IDE自带的静态代码检测工具、各种AndroidMonitor;jdk自带的traceView等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android Bugreport实现原理深入分析

    Android Bugreport实现原理深入分析

    这篇文章主要介绍了Android Bugreport实现原理,Bugreport主要用于分析手机的状态,在应用开发中,程序的调试分析是日常生产中进程会进行的工作,Bugreport就是很常用的工具,需要的朋友可以参考下
    2024-05-05
  • Android编程中沉浸式状态栏的三种实现方式详解

    Android编程中沉浸式状态栏的三种实现方式详解

    这篇文章主要介绍了Android编程中沉浸式状态栏的三种实现方式,简单描述了沉浸式状态栏的概念、功能并结合实例形式详细分析了Android实现沉浸式状态栏的三种操作技巧与注意事项,需要的朋友可以参考下
    2018-02-02
  • Android 中Lambda表达式的使用实例详解

    Android 中Lambda表达式的使用实例详解

    这篇文章主要介绍了 Android 中Lambda表达式的使用实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android应用自动跳转到应用市场详情页面的方法

    Android应用自动跳转到应用市场详情页面的方法

    最近在工作中遇到一个需求,推广部门要求实现应用自动跳转到应用市场详情页面,通过查找一些资料,实现出来了,觉得有必要整理下方便以后或者有需要的朋友们参考借鉴,下面来一起详细看看Android应用自动跳转到应用市场详情页面的方法吧。
    2016-12-12
  • 详解Android微信登录与分享

    详解Android微信登录与分享

    本篇文章主要对Android微信登录与分享功能的实现进行了介绍。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Android Intent基础用法及作用详解

    Android Intent基础用法及作用详解

    Intent是一种重要的消息传递对象,用于在不同组件(如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)等)之间进行通信和交互,本文介绍Android Intent基础用法及作用,感兴趣的朋友一起看看吧
    2024-07-07
  • Android实现单选与多选对话框的代码

    Android实现单选与多选对话框的代码

    这篇文章主要介绍了Android实现单选与多选对话框的代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • 25个实用酷炫的Android开源UI框架

    25个实用酷炫的Android开源UI框架

    本文为大家分享了25个实用酷炫的Android开源UI框架,灵活运用这些UI框架可在日常工作中节省不少时间
    2018-04-04
  • Android入门教程之RecyclerView的具体使用详解

    Android入门教程之RecyclerView的具体使用详解

    RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法
    2021-10-10
  • Android漂浮背景效果的制作方法

    Android漂浮背景效果的制作方法

    这篇文章主要为大家详细介绍了Android漂浮背景效果的制作代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论