java.io.NotSerializableException: android.os.Bundle при попытке сериализации объекта, содержащего комплект Android
Я хочу отправить объект с помощью Messageapi с умных часов на смартфон. Так как messageapi нужен байтовый массив для отправки сообщений, я хочу преобразовать мой объект в байтовый массив. Я использовал утилиты apache для сериализации и десериализации. Я получаю следующую ошибку при сериализации:
org.apache.commons.lang3.SerializationException: java.io.NotSerializableException: android.os.Bundle
at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:156)
at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:178)
Мой объект имеет две переменные - одну строку и один комплект Android.
Ниже приведена реализация кода:
Для сериализации:
byte[] data = SerializationUtils.serialize(myObject);
Для десериализации:
MyObject myObject = (MyObject) SerializationUtils.deserialize(byte[] data)
Каков наилучший способ сериализации объекта, содержащего комплект Android?
Класс MyObject выглядит следующим образом:
public class MyObject implements Serializable {
private String type;
private Bundle data;
public String getType() {
return type;
}
public void setType(String value) {
type = value;
}
public Bundle getData() {
return data;
}
public void setData(Bundle value) {
data = value;
}
}
PS: я попробовал Parcelable для сериализации объектов, содержащих комплект Android, и он работает на устройствах с теми же версиями ОС. Но это не работает, когда два задействованных устройства имеют разные версии ОС (например, отправка сообщения с устройства уровня API 23 на устройство уровня API 15 с использованием wifip2p). Поэтому я ищу метод, который работает все время.
1 ответ
Проблема:
Я думаю, что есть некоторые объекты, которые не могут быть сериализованы, такие как Bundle и Context. Сама причина ошибки не может сериализовать Bundle.
java.io.NotSerializableException: android.os.Bundle
Решение:
Попробуйте удалить
private Bundle data;
отMyObject
и посмотреть, если вы получаете ту же ошибку??
Вам нужно найти способ сериализации Bundle. Ниже приведен вопрос, на который вы можете обратиться: