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. Ниже приведен вопрос, на который вы можете обратиться:

Как сериализовать Bundle?

Другие вопросы по тегам