Android性能优化-内存篇(其实内存优化也就这回事),android混合开发弊端

本文探讨了Android应用性能优化中的内存管理,包括避免数组扩容、减少字符串拼接、慎用枚举、ListView对象复用、减少布局层级、序列化使用Protobuf、数据库避免使用AUTOINCREMENT、Bitmap优化策略如选择合适的inSampleSize和inPreferredConfig,以及内存泄漏的处理方法。通过这些实践,可以有效降低内存消耗,提升应用性能。
摘要由CSDN通过智能技术生成

如果扩容次数多了,GC的次数也会频繁的增多。

如果我们预先能够知道需要,存储多少个元素,或者大概多少个元素,我们可以使用带参数的构造方法来创建出这个大小的数组,来减少数组扩容的次数。

(4):for循环中不要使用“+”号拼接字符串

“+”底层还是通过StringBuilder实现的,每一次for循环都会创建一个StringBuilder对象。

当我们使用for循环外部创建StringBuilder,内部使用它拼接字符串,内存图形很平稳。

在这里插入图片描述

for循环内部使用+号拼接字符串,图形抖动(内存抖动),一直在GC。

在这里插入图片描述

(5):尽可能少的使用枚举

使用 ENUM 将会增大 DEX 大小,并会增大运行时的内存分配大小。为了弥补 Android 平台不建议使用枚举的缺陷,官方推出了两个注解,IntDef和StringDef,用来提供编译期的类型检查。

在这里插入图片描述

枚举本质上是通过普通的类来实现的,只是编译器为我们进行了处理。每个枚举类型都继承自java.lang.Enum,并自动添加了values和valueOf方法。而每个枚举常量是一个静态常量字段,使用内部类实现,该内部类继承了枚举类。所有枚举常量都通过静态代码块来进行初始化,即在类加载期间就初始化。

(6):ListView复用,对象复用

这个就不多少了,我相信每个Android开发者都知道。

(7):减少布局的层级

减少View的个数,减少测量的时间(View显示在前台,经过三个阶段测量,布局和绘制)。能够减轻内存,CPU的负担。

(8):序列化可以使用Protobuf

Protobuf是谷歌推出的一款平台无关,语言无关,可扩展的序列化和反序列化技术。有兴趣的朋友可以自行了解一个,这里就不多说了。

(9):数据库减少使用AUTOINCREMENT关键字

AUTOI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值