不诗意的女程序媛不是好厨师~ 转载请注明出处,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
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0