应用场景
需要在多个部件(Activity或Service)之间通过Intent传递一些数据,简单类型(如:数字、字符串)的可以直接放入Intent。复杂类型必须实现Parcelable接口。
Android Studio如何生成Serializable 的serialVersionUID
默认情况下implements Serializable是不会自动生成UID的,我们可以在设置中开启提示:
然后可以看到提示:
然后光标放在类名上,快捷键Alt + Enter选中生成serialVersionUID:
Done:
Android Studio Parcelable代码生成插件
帮我们生成Parcelable代码
Settings>Plugins安装插件后重启AS,快捷键Alt + Ins选择Parcelable:
例子
BookSerializable.java
package com.zhoumushui.frogweather.bean;
import java.io.Serializable;
public class BookSerializable implements Serializable{
private static final long serialVersionUID = -8361940723643607913L;
private String name;
private float prize;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrize() {
return prize;
}
public void setPrize(float prize) {
this.prize = prize;
}
public BookSerializable(String name, float prize) {
this.name = name;
this.prize = prize;
}
}
BookParcelable.java
package com.zhoumushui.frogweather.bean;
import android.os.Parcel;
import android.os.Parcelable;
public class BookParcelable implements Parcelable{
private String name;
private float prize;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrize() {
return prize;
}
public void setPrize(float prize) {
this.prize = prize;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeFloat(this.prize);
}
public BookParcelable() {
}
public BookParcelable(String name, float prize) {
this.name = name;
this.prize = prize;
}
protected BookParcelable(Parcel in) {
this.name = in.readString();
this.prize = in.readFloat();
}
public static final Creator CREATOR = new Creator() {
@Override
public BookParcelable createFromParcel(Parcel source) {
return new BookParcelable(source);
}
@Override
public BookParcelable[] newArray(int size) {
return new BookParcelable[size];
}
};
}
序列化,传递数据
Intent intentSerializableParcelable = new Intent(MainActivity.this,
SerializableParcelableActivity.class);
Bundle bundle = new Bundle();
最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿
参考docs.qq.com/doc/DSkNLaERkbnFoS0ZF
class);
Bundle bundle = new Bundle();
最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿
[外链图片转存中…(img-Z8jK5FmK-1724447867404)]
参考docs.qq.com/doc/DSkNLaERkbnFoS0ZF