主要观点总结
文章主要介绍了在Android中为什么使用Bundle而不使用HashMap,以及Parcelable和Serializable的区别。文章从Bundle相比HashMap占用更少内存、系统限制、Parcelable比Serializable性能更好以及如何选择使用Parcelable和Serializable等方面进行了详细阐述。
关键观点总结
关键观点1: Bundle相比HashMap的优势
Bundle内部由ArrayMap实现,相比HashMap占用更少内存,适合小数据量操作。ArrayMap和HashMap在Android中都是常用的键值对数据结构。
关键观点2: 系统的限制
Activity之间通过Intent传递数据,使用Bundle来传递数据可以保证更快的速度和更少的内存占用,因为系统的Binder事务缓冲区大小限定在1MB,不能传递大数据。
关键观点3: Parcelable和Serializable的区别
HashMap使用Serializable进行序列化,而Bundle则是使用Parcelable进行序列化。Serializable是Java原生序列化的方式,性能较差,需要手动指定serialVersionUID。Parcelable是为了解决Android中跨进程通信性能差的问题,写入和读取时采用自定义序列化存储的方式,比Serializable快很多。
关键观点4: 如何选择使用Parcelable和Serializable
Serializable适用于数据持久化存储,而Parcelable适用于Android应用程序在内存间数据传输。如果数据需要持久化存储,推荐使用Serializable;如果数据只是在内存环境中传递,推荐使用Parcelable。
文章预览
本文作者 作者: 程序员DHL 链接: https://juejin.cn/post/7408379631093219379 本文由作者授权发布。 Bundle 内部是由 ArrayMap 实现的,ArrayMap 和 HashMap 是 Android 中常用的两种键值对数据结构,关于它们的区别可以前往微信小程序「猿面试」中查看 「ArrayMap和HashMap的区别」。 这篇文章我们一起来看一下在 Android 中为什么使用 Bundle 而不使用 HashMap。 1 Bundle 相比 HashMap 占用更少内存 Bundle 内部是由 ArrayMap 实现的,ArrayMap 的内部实现是两个数组,一个记录所有 key 的 hashcode 值组成的数组,是从小到大的排序方式,一个存放 key-value。 内部使用二分法进行查找,时间复杂度为 O (log n),但由于数组操作(如插入、删除)需要移动元素,插入和删除的时间复杂度为 O (n),因此只适合于小数据量操作。 ArrayMap 满足条件会扩容后的大小为原来的 1.5 倍,并且有容量收缩机制,
………………………………