本地网站建设官网,外贸圈阿里巴巴,新媒体营销六种方式,阿坝县建设局网站文章目录1、使用上1.1 Intent 方式1.2 Bundle 方式2、为什么 Bundle 使用 ArrayMap 而不是 Hashmap 实现呢#xff1f;1、使用上
1.1 Intent 方式
举例#xff1a;将数据从页面 A 传递到 B#xff0c;然后再传递到 CA 页面#xff1a;
Intent intentnew Intent(MainActi…
文章目录1、使用上1.1 Intent 方式1.2 Bundle 方式2、为什么 Bundle 使用 ArrayMap 而不是 Hashmap 实现呢1、使用上
1.1 Intent 方式
举例将数据从页面 A 传递到 B然后再传递到 CA 页面
Intent intentnew Intent(MainActivity.this,BActivity.class);
intent.putExtra(String,MainActivity中的值);
intent.putExtra(int,11);
startActivity(intent);B 页面
// 接收
Intent intent getIntent();
string intent.getStringExtra(String);
key intent.getIntExtra(int,0);// 发送
Intent intentnew Intent(BActivity.this,CActivity.class);
intent.putExtra(String1,string);
intent.putExtra(int1,key);
intent.putExtra(boolean,true);
startActivity(intent);在 B 页面需要将数据一条条取出来再一条条发送给 C
1.2 Bundle 方式
A 页面
Intent intent new Intent(MainActivity.this, BActivity.class);
Bundle bundle new Bundle();
bundle.putString(String,MainActivity中的值);
bundle.putInt(int,11);
intent.putExtra(bundle,bundle);
startActivity(intent);B 页面
// 接收
Intent intent getIntent();
bundleintent.getBundleExtra(bundle);// 发送
Intent intentnew Intent(BActivity.this,CActivity.class);
//可以传给CActivity额外的值
bundle.putBoolean(boolean,true);
intent.putExtra(bundle1,bundle);
startActivity(intent);可以直接对 Bundle 进行操作。但是 Bundle 需要借助 Intent 完成数据触动你Bundle 旨在存储数据Intent 旨在传值
2、为什么 Bundle 使用 ArrayMap 而不是 Hashmap 实现呢 Bundle 内部由 ArrayMap 实现。ArrayMap 底层是两个数组一个 Int 数组存储 key 对应的 hash 值另一个数组存储 key 和 valuekey 在 index*2 位置value 在 index*21 位置。每次插入时根据 key 的 hash 值利用二分查找去寻找 key 在 Int 数组中的下标位置 index如果出现了 hash 冲突从目标点向两头遍历直到找到正确的 index。二份查找法只适合小数据量操作如果数据量比较大性能将退化。而 Bundle 的场景大多数为小数据量故使用 ArrayMap 更合适。 其次HashMap 使用 Serializable 进行系列化Bundle 使用 Parcelable 进行系列化。在 Android 平台更推荐使用 Parcelable 实现序列化开销更小能更快的进行书序的序列化和反序列化。 相关文章 ArrayMap 源码解析 HashMap 源码解析 Serializable 和 Parcelable