java - 如何使用可序列化类

标签 java android object serialization backendless

我使用 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 对象上使用 Parcelablesee this answer

编辑:由于Object不是Parcelable,尽管您可能想遵循Alexander的答案,或者更好的是,使用数据库进行数据持久化

关于java - 如何使用可序列化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305415/

相关文章:

PHP 和类 : access to parent's public property within the parent class

Javascript 扩展变量中的对象

java - 使用线程和信号量读取和写入文件

java - Android:无法从类型 View 对非静态方法 getResources() 进行静态引用

java - 重写接口(interface)中的其他场景

java - 我如何从软键盘启动主要 Activity

android - Trigger.io 和自定义键盘

java - HK2 注入(inject)问题

java - Android 7.0 无法创建文件夹

python - 类ClassName与类ClassName(对象)