束的內部是通過ArrayMap實現的。ArrayMap由兩個數組實現。int數組存儲對象數據的相應下標,object數組存儲鍵和值,鍵在內部按二分法排序。所以在添加、刪除和搜索數據時,采用二分法進行搜索,只適合小數據量的操作。如果數據量比較大,其性能會變差。但是HashMap是數組+鏈表的結構,所以當數據量較小時,HashMap的Entry數組比ArrayMap占用更多內存。因為使用Bundle的場景大部分都是小數據,我從來沒有見過兩個Activity之間傳輸超過10的數據的場景,所以相比之下,這種情況下使用ArrayMap保存數據在運算速度和內存占用上是有優勢的,所以使用Bundle傳輸數據可以保證更快的速度和更少的內存占用。
另壹個原因是,如果在Android中使用Intent攜帶數據,需要數據是基本類型或者可序列化類型,HashMap使用Serializable進行序列化,Bundle使用Parcelable進行序列化。在Android平臺,推薦使用Parcelable實現序列化。雖然寫的比較復雜,但是開銷比較低。因此,為了更快地序列化和反序列化數據,系統封裝了Bundle類,以方便我們的數據傳輸。
希望對妳有幫助。福建蜂鳥雲商為您解答。