parcelablereadvalue怎么用android
答案:2 悬赏:80
解决时间 2021-12-15 16:12
- 提问者网友:你在我眼中是最帅
- 2021-12-15 07:19
parcelablereadvalue怎么用android
最佳答案
- 二级知识专家网友:年轻没有失败
- 2021-12-15 07:57
根据源码分析,传递的是一个引用,就拿paceable类型的对象来说:
(1)存储数据的时候Bundle中的源码:
第一步:
public Intent putExtra(String name, Parcelable value) {
if (mExtras == null) {
mExtras = new Bundle();
}
》》重点看这句mExtras.putParcelable(name, value);
return this;
}
第二步 public void putParcelable(@Nullable String key, @Nullable Parcelable value) { unparcel(); 》》重点看这句 mMap.put(key, value); mFlags &= ~FLAG_HAS_FDS_KNOWN; } 放入一个mMap中,而mMap的数据类型是 ArrayMap ArrayMap中的 @Override public V put(K key, V value)方法中仅仅是赋值, mArray[index] = value; 所以在放的时候是一个引用 (2) 在取的时候也没有创建 */ @Nullable public T getParcelable(@Nullable String key) { unparcel(); 》》重点看这句 Object o = mMap.get(key); //是Bundle中的源码,直接从map中取出然后返回 if (o == null) { return null; } try { return (T) o; } catch (ClassCastException e) { typeWarning(key, o, "Parcelable", e); return null; } } 综上所述,传递的是引用
(1)存储数据的时候Bundle中的源码:
第一步:
public Intent putExtra(String name, Parcelable value) {
if (mExtras == null) {
mExtras = new Bundle();
}
》》重点看这句mExtras.putParcelable(name, value);
return this;
}
第二步 public void putParcelable(@Nullable String key, @Nullable Parcelable value) { unparcel(); 》》重点看这句 mMap.put(key, value); mFlags &= ~FLAG_HAS_FDS_KNOWN; } 放入一个mMap中,而mMap的数据类型是 ArrayMap
全部回答
- 1楼网友:万千宠爱
- 2021-12-15 09:16
虽然我很聪明,但这么说真的难到我了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯