返回顶部
首页 > 资讯 > 移动开发 >Android面试专题系列(六):Activity中为什么要用bundle来传递数据,而不用HashMap来代替?
  • 703
分享到

Android面试专题系列(六):Activity中为什么要用bundle来传递数据,而不用HashMap来代替?

数据activityhashmapbundleAndroid 2022-06-06 13:06:04 703人浏览 薄情痞子
摘要

不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨—https://blog.csdn.net/cjm2484836553/article/details/105152708 面试官:“你一定看过Activity的onC

不诗意的女程序媛不是好厨师~
转载请注明出处,From李诗雨—https://blog.csdn.net/cjm2484836553/article/details/105152708

在这里插入图片描述

面试官:“你一定看过

Activity
onCreate()
方法吧,为什么它要用bundle来传递数据,而不用
HashMap
来代替呢?”

这个问题就要我们来看看源码了,我们点进去

Bundle
来一探究竟:
在这里插入图片描述
我们来一下存储数据的方法
putByte()
, 发现它调用的是
super.putByte()
,我们继续跟进:
在这里插入图片描述

我们发现它调用的是

mMap
put()
方法。而且,我们环顾四周,他们都是调用的
mMap
put()
方法。

那不经让我们想到 关键点 就在这个

mMap
了,它到底是个什么东西!好激动呀,继续看:
在这里插入图片描述

呦西!到这里我们明白了!原来mMap就是ArrayMap啊。那面试官其实不就是想问“为什么用ArrayMap来传递数据而不用HashMap呢?”

那接下来我们的任务不就要比较ArrayMap与HashMap了吗?→即ArrayMap的优势在哪?

嘻嘻,答案如下:

1.ArrayMap适合于小数据量操作,如果在数据量比较大的情况下,它的性能将退化。HashMap内部则是数组+链表结构,所以在数据量较少的时候,HashMap的Entry Array比ArrayMap占用更多的内存。而在Activity中我们使用Bundle的场景大多数为小数据量。所以使用ArrayMap实现更合适。 2.Android中如果使用Intent来携带数据的话,需要数据是基本类型或者是可序列化类型,Bundle使用Parcelable进行序列化,而HashMap则是使用Serializable进行序列化。在Android中Parcelable比Serializable性能要高。

关于第二点,我们在源码中可以看到:
在这里插入图片描述
在这里插入图片描述

积累点滴,做好自己


作者:李诗雨


--结束END--

本文标题: Android面试专题系列(六):Activity中为什么要用bundle来传递数据,而不用HashMap来代替?

本文链接: https://lsjlt.com/news/29339.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作