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

Android APP 机能优化的一些思索

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

MAT 是一个快速,成果富厚的 Java Heap 说明器材,通过说明 Java 历程的内存快照 HPROF 说明,从浩瀚的工具中说明,快速计较出在内存中工具占用的巨细,查察哪些工具不能被垃圾网络器接纳,并可以通过视图直观地查察也许造成这种功效的工具。

常见内存走漏场景

假如在内存走漏产生后再去找缘故起因并修复会增进开拓的本钱,最亏得编写代码时就可以或许很好地思量内存题目,写出更高质量的代码,这里列出一些常见的内存走漏场景,在往后的开拓进程中必要停止这类题目。

  • 资源性工具未封锁。好比Cursor、File文件等,每每都用了一些缓冲,在不行使时,应该实时封锁它们。
  • 注册工具未注销。好比变乱注册后未注销,会导致调查者列表中维持着工具的引用。
  • 类的静态变量持有大数据工具。
  • 非静态内部类的静态实例。
  • Handler姑且性内存走漏。假如Handler长短静态的,轻易导致 Activity 或 Service 不会被接纳。
  • 容器中的工具没整理造成的内存走漏。
  • WebView。WebView 存在着内存走漏的题目,在应用中只要行使一次 WebView,内存就不会被开释掉。

除此之外,内存走漏可监控,常见的就是用LeakCanary 第三方库,这是一个检测内存走漏的开源库,行使很是简朴,可以在产生内存走漏时告警,而且天生 leak tarce 说明走漏位置,同时可以提供 Dump 文件举办说明。

优化内存空间

没有内存走漏,并不料味着内存就不必要优化,在移动装备上,因为物理装备的存储空间有限,Android 体系对每个应用历程也都分派了有限的堆内存,因此行使最小内存工具可能资源可以减小内存开销,同时让GC 能更高效地接纳不再必要行使的工具,让应用堆内存保持富裕的可用内存,使应用更不变高效地运行。常见做法如下:

  • 工具引用。强引用、软引用、弱引用、虚引用四种引用范例,按照营业需求公道行使差异,选择差异的引用范例。
  • 镌汰不须要的内存开销。留意自动装箱,增进内存复用,好比有用操作体系自带的资源、视图复用、工具池、Bitmap工具的复用。
  • 行使最优的数据范例。好比针对数据类容器布局,可以行使ArrayMap数据布局,停止行使列举范例,行使缓存Lrucache等等。
  • 图片内存优化。可以配置位图规格,按照采样因子做压缩,用一些图片缓存方法对图片举办打点等等。

不变性优化

Android 应用的不变性界说很宽泛,影响不变性的缘故起因许多,好比内存行使不公道、代码非常场景思量不周全、代码逻辑不公道等,城市对应用的不变性造成影响。个中最常见的两个场景是:Crash 和 ANR,这两个错误将会使得措施无法行使,较量常用的办理方法如下:

  • 进步代码质量。好比开拓时代的代码考核,看些代码计划逻辑,营业公道性等。
  • 代码静态扫描器材。常见器材有Android Lint、Findbugs、Checkstyle、PMD等等。
  • Crash监控。把一些瓦解的信息,非常信息实时地记录下来,以便后续说明办理。
  • Crash上传机制。在Crash后,只管老师涯日记到当地,然后等下一次收集正常时再上传日记信息。

耗电优化

在移动装备中,电池的重要性不问可知,没有电什么都干不成。对付操纵体系和装备开拓商来说,耗电优化同等没有遏制,去追求更长的待机时刻,而对付一款应用来说,并不是可以忽略电量行使题目,出格是那些被归为“电池杀手”的应用,最终的功效是被卸载。因此,应用开拓者在实现需求的同时,必要只管镌汰电量的耗损。

在 Android5.0 早年,在应用中测试电量耗损较量贫困,也禁绝确,5.0 之后专门引入了一个获取设惫亓?量耗损信息的 API:Battery Historian。Battery Historian 是一款由 Google 提供的 Android 体系电量说明器材,和Systrace 一样,是一款图形化数据说明器材,直观地展示脱手机的电量耗损进程,通过输入电量说明文件,表现耗损环境,最后提供一些可供参考电量优化的要领。

除此之外,尚有一些常用方案可提供:

  • 计较优化,避开浮点运算等。
  • 停止 WaleLock 行使不妥。
  • 行使 Job Scheduler。

安装包巨细优化

应用安装包巨细对应用行使没有影响,但应用的安装包越大,用户下载的门槛越高,出格是在移动收集环境下,用户在下载应用时,对安装包巨细的要求更高,因此,减小安装包巨细可以让更多用户乐意下载和体验产物。

常用应用安装包的组成,如图所示:

Android APP 机能优化的一些思索

从图中我们可以看到:

  • assets文件夹。存放一些设置文件、资源文件,assets不会自动天生对应的 ID,而是通过 AssetManager 类的接口获取。
  • res。res 是 resource 的缩写,这个目次存放资源文件,会自动天生对应的 ID 并映射到 .R 文件中,会见直接行使资源 ID。
  • META-INF。生涯应用的署名信息,署名信息可以验证 APK 文件的完备性。
  • AndroidManifest.xml。这个文件用来描写 Android 应用的设置信息,一些组件的注册信息、可行使权限等。
  • classes.dex。Dalvik 字节码措施,让 Dalvik 假造机可执行,一样平常环境下,Android 应用在打包时通过 Android SDK 中的 dx 器材将 Java 字节码转换为 Dalvik 字节码。
  • resources.arsc。记录着资源文件和资源 ID 之间的映射相关,用来按照资源 ID 探求资源。

(编辑:湖南网)

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

热点阅读