时间:2021-05-19
开发一款性能优良的应用是每一个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等。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
搜索引擎优化工具是各种辅助程序,可以在搜索引擎优化过程中提高网站的性能和准确性。这些工具的使用和优化器的智能正在朝着积极的方向发展,这将为网站优化提供更大的帮助
前言Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的
其实这个是有工具,而且工具还是我们比较熟悉的,那就是千牛工作台了,我们都知道,PC端千牛有超强的性能优化和安全保障,优化了登录速度、内存消耗及数据账号安全三
Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向图像的Sensor方向:手机Camera的图像数据都是
如果你想提高你宝贝的搜索权重并找到优化的方向,你必须首先了解影响单个项目权重的因素。类别和属性应该是相关的,宝贝的类别和属性应该高度相关。即使相关性很差,宝贝的