我使用 Backendless 作为后端服务,它提供了一个名为 BackendlessUser
的类来保存和检索用户。我试图通过将 User 作为 Serialized
extra 传递,在 Android 上的两个 Activity 之间传递:
Intent intent = new Intent(PeopleActivity.this, ConversationActivity.class);
intent.putExtra("withUser", contacts.get(position));
startActivity(intent);
由于类BackendlessUser
实现了Serialized
。但是,当我运行它时,它给了我这个错误:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.backendless.BackendlessUser)
at android.os.Parcel.writeSerializable(Parcel.java:1468)
at android.os.Parcel.writeValue(Parcel.java:1416)
....
Caused by: java.io.NotSerializableException: java.lang.Object
....
我认为,由于这个变量:
public final class BackendlessUser implements Serializable {
private final Map<String, Object> properties = new HashMap<String, Object>();
...
考虑到我无法修改 BackendlessUser
类,我该如何解决这个问题?
最佳答案
在 Android 中,您应该使用 Parcelable
,与 Serialized
相比,它可以提供更好的性能。有关如何实现它的说明 take a look at this answer
此外,如果您需要在 map 对象上使用 Parcelable
,see this answer
编辑:由于Object
不是Parcelable
,尽管您可能想遵循Alexander的答案,或者更好的是,使用数据库进行数据持久化
关于java - 如何使用可序列化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305415/