加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Android APP 性能优化的一些思考

发布时间:2019-09-18 16:26:40 所属栏目:业界 来源:斜杠Allen
导读:说到 Android 体系手机,大部门人的印象是用了一段时刻就变得有点卡顿,有些措施在运行时代莫名其妙的呈现瓦解,打开体系文件夹一看,发明多了许多文件,然后用手机管家 APP 不绝地举办整理优化 ,才感受运行速率轻微进步了点,就算手机在各类机能跑分软件

怎样停止太过绘制呢,如下:

  • 机关上的优化。移除 XML 中非必需的配景,移除 Window 默认的配景、按需表现占位配景图片
  • 自界说View优化。行使 canvas.clipRect()来辅佐体系辨认那些可见的地区,只有在这个地区内才会被绘制。

3,启动优化

通过对启动速率的监控,发明影响启动速率的题目地址,优化启动逻辑,进步应用的启动速率。启动首要完成三件事:UI 机关、绘制和数据筹备。因此启动速率优化就是必要优化这三个进程:

  • UI 机关。应用一样平常都有闪屏页,优化闪屏页的 UI 机关,可以通过 Profile GPU Rendering 检测丢帧环境。
  • 启动加载逻辑优化。可以回收漫衍加载、异步加载、延期加载计策来进步应用启动速率。
  • 数据筹备。数据初始化说明,加载数据可以思量用线程初始化等计策。

4,公道的革新机制

在应用开拓进程中,由于数据的变革,必要革新页面来展示新的数据,但频仍革新会增进资源开销,而且也许导致卡顿产生,因此,必要一个公道的革新机制来进步整体的 UI 流通度。公道的革新必要留意以下几点:

  • 只管镌汰革新次数。
  • 只管停止靠山有高的 CPU 线程运行。
  • 缩小革新地区。

5,其他

在实现动画结果时,必要按照差异场景选择吻合的动画框架来实现。有些环境下,可以用硬件加快方法来提供流通度。

内存优化

在 Android 体系中有个垃圾内存接纳机制,在假造机层自动分派和开释内存,因此不必要在代码平分派和开释某一块内存,从应用层面上不轻易呈现内存走漏和内存溢出等题目,可是必要内存打点。Android 体系在内存打点上有一个 Generational Heap Memory 模子,内存接纳的大部门压力不必要应用层体谅, Generational Heap Memory 有本身一套打点机制,当内存到达一个阈值时,体系会按照差异的法则自动开释体系以为可以开释的内存,也正是由于 Android 措施把内存节制的权利交给了 Generational Heap Memory,一旦呈现内存走漏和溢出方面的题目,排查错误将会成为一项非常艰巨的事变。除此之外,部门 Android 应用开拓职员在开拓进程中并没有出格存眷内存的公道行使,也没有在内存方面做太多的优化,当应用措施同时运行越来越多的使命,加上越来越伟大的营业需求时,完全依靠 Android 的内存打点机制就会导致一系列机能题目逐渐泛起,对应用的不变性和机能带来不行忽视的影响,因此,办理内存题目和公道优化内存长短常有须要的。

Android内存打点机制

Android 应用都是在 Android 的假造机上运行,应用 措施的内存分派与垃圾接纳都是由假造机完成的。在 Android 体系,假造机有两种运行模式:Dalvik 和 ART。

1,Java工具生命周期

Android APP 机能优化的一些思索

一样平常Java工具在假造机上有7个运行阶段:

  • 建设阶段->应用阶段->不行见阶段->不行达阶段->网络阶段->终结阶段->工具空间从头分派阶段

2,内存分派

在 Android 体系中,内存分派现实上是对堆的分派和开释。当一个 Android 措施启动,应用历程都是从一个叫做 Zygote 的历程衍生出来,体系启动 Zygote 历程后,为了启动一个新的应用措施历程,体系会衍生 Zygote 历程天生一个新的历程,然后在新的历程中加载并运行应用措施的代码。个中,大大都的 RAM pages 被用来分派给Framework 代码,同时促使 RAM 资源可以或许在应用全部历程之间共享。

可是为了整个体系的内存节制必要,Android 体系会为每一个应用措施都配置一个硬性的 Dalvik Heap Size 最大限定阈值,整个阈值在差异装备上会由于 RAM 巨细差异而有所差别。假如应用占用内存空间已经靠近整个阈值时,再实行分派内存的话,就很轻易引起内存溢出的错误。

3,内存接纳机制

我们必要知道的是,在 Java 中内存被分为三个地区:Young Generation(年青代)、Old Generation(大哥代)、Permanent Generation(耐久代)。最近分派的工具会存放在 Young Generation 地区。工具在某个机缘触发 GC 接纳垃圾,而没有接纳的就按照差异法则,有也许被移动到 Old Generation,最后累积一按时刻在移动到 Permanent Generation 地区。体系会按照内存中差异的内存数据范例别离执行差异的 GC 操纵。GC 通过确定工具是否被勾当工具引用来确定是否网络工具,进而动态接纳无任何引用的工具占有的内存空间。但必要留意的是频仍的 GC 会增进应用的卡顿环境,影相应用的流通性,因此必要只管镌汰体系 GC 举动,以便进步应用的流通度,减小卡顿产生的概率。

内存说明器材

做内存优化前,必要相识当前应用的内存行使近况,通过近况去说明哪些数据范例有题目,各类范例的漫衍环境怎样,以及在发明题目后怎样发明是哪些详细工具导致的,这就必要相干器材来辅佐我们。

1,Memory Monitor

Memory Monitor 是一款行使很是简朴的图形化器材,可以很好地监控体系或应用的内存行使环境,首要有以下成果:

  • 表现可用和已用内存,而且以时刻为维度及时回响内存分派和接纳环境。
  • 快速判定应用措施的运行迟钝是否因为太过的内存接纳导致。
  • 快速判定应用是否因为内存不敷导致措施瓦解。

2,Heap Viewer

Heap Viewer 的首要成果是查察差异数据范例在内存中的行使环境,可以看到当前历程中的 Heap Size 的环境,别离有哪些范例的数据,以及各类范例数据占比环境。通过说明这些数据来找到大的内存工具,再进一步说明这些大工具,进而通过优化镌汰内存开销,也可以通过数据的变革发明内存走漏。

3,Allocation Tracker

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读