Java Parcelable vs Serializable-适用于没有任何字段的类
通常,我必须在没有任何内部数据的情况下将某个接口实例传递给片段(或活动)。要将其传递给片段(或活动),我应该将其作为Java Parcelable vs Serializable-适用于没有任何字段的类,java,android,serialization,parcelable,Java,Android,Serialization,Parcelable,通常,我必须在没有任何内部数据的情况下将某个接口实例传递给片段(或活动)。要将其传递给片段(或活动),我应该将其作为Parcelable或Serializable写入Bundle(或Intent)。我应该从这两个选项中选择什么 例如: public class SomeFragment { public static interface Helper { View prepareView(SomeFragment fragment, LayoutInflater inf
Parcelable
或Serializable
写入Bundle
(或Intent
)。我应该从这两个选项中选择什么
例如:
public class SomeFragment {
public static interface Helper {
View prepareView(SomeFragment fragment, LayoutInflater inflater);
// etc.
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return extractHelperFromArguments().prepareView(this, inflater);
}
public static SomeFragment newInstance(Helper helper) {
SomeFragment fragment = new SomeFragment();
//
// Bundle args = new Bundle();
//
// args.putParcelable(KEY_HELPER, (Parcelable) helper);
// or
// args.putSerializable(KEY_HELPER, (Serializable) helper);
// ?
//
// fragment.setArguments(args)
return fragment;
}
}
如果我选择了Parcelable
,那么我必须声明静态字段CREATOR
和空方法descripbecontents()
和writeToParcel()
(空是因为类没有字段)
如果我选择Serializable
,那么我就不必做任何事情
对不起,我的英语很好,这是一个很好的链接。阅读此链接后,您将不再有关于可打包与可序列化的问题
这是一个完美的答案。如果速度因子与上图一样只有2,我就不会费心实现Parcelable,事实上,我觉得这一点更接近事实:@pskink LOL。感谢分享链接。尽管实现serializable很简单,但Parcelable仍然是一种选择。这个答案有误导性,因为这个问题是专门针对没有字段的对象的。传统序列化的成本来自对类变量的反射,如果没有任何变量进行反射,则不会产生任何成本。