Передача arraylists между действиями, Parcelable против Serializable - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать Intent с ArrayList<Byte> в качестве дополнительного.

Итак, у меня есть 3 варианта:

  1. putParceableArrayList(key: String?, value: ArrayList<out Parceable!>?)
  2. putByteArray(key: String?, value: ByteArray?)
  3. putSerializable(key: String?, value: Serializable?)

Я бы предпочел не использовать 3-й вариант, потому что Разборчивые объекты быстрее, чем Сериализуемые ( Android: Разница между Разборчивыми и Сериализуемыми? ).

Отбрасывая эту опцию, я хочу использовать первую опцию, потому что мне нужен этот объект как ArrayList, а не как собственный массив bytes[] (ByteArray на Kotlin).

Проблемаявляется тем, что объект Byte является нативным, поэтому он не реализует Parceable.Так что я не могу использовать первый вариант, потому что он требует ArrayList<out Parceable>.

Лучший вариант, который я нашел, - преобразовать ArrayList в ByteArray и преобразовать его обратно в ArrayList, когдаЯ распаковываю дополнения примерно так:

intent.extras?.putByteArray(event, response.toByteArray())

[...]

var list = Arrays.asList(intent.extras?.getByteArray(event))

Какой вариант лучше?Спасибо!

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете попробовать библиотеку Parceler , она упростит вашу жизнь и избавит вас от всего стандартного кода интерфейса Parcelable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...