您的位置:首页 > 移动开发 > Android开发

Android传递Parcelable时忽略的一个细节

2016-06-15 15:51 519 查看
今天SZ突然问我传递Parcelable的实现类时,如果类成员变量中有一个类如何传递。。

写了很多继承Parcelable的类,这个问题还真没想过,第一反应就是该类也必须继承Parcelable

果然在Parcel类中找到

@SuppressWarnings("unchecked")
public final <T extends Parcelable> T readParcelable(ClassLoader loader) {
Parcelable.Creator<?> creator = readParcelableCreator(loader);
if (creator == null) {
return null;
}
if (creator instanceof Parcelable.ClassLoaderCreator<?>) {
Parcelable.ClassLoaderCreator<?> classLoaderCreator =
(Parcelable.ClassLoaderCreator<?>) creator;
return (T) classLoaderCreator.createFromParcel(this, loader);
}
return (T) creator.createFromParcel(this);
}

方法。

所以代码自然就出来了

protected TestBean1(Parcel in) {
mIndex = in.readInt();
mTitle = in.readString();
mTestBean2 = (TestBean2) in.readParcelable(getClass().getClassLoader());
}







@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mIndex);
dest.writeString(mTitle);
dest.writeParcelable(mTestBean2,flags);
}

TestBean2也是继承了Parcelable的类,代码是这样的。那原理呢 这涉及到Android IPC通信机制,稍后再说
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: