Pass Serializable extra для PendingIntent в SDK26 + [дубликат]

У меня такая же проблема.

conda install -f jpeg=8

conda install libgdal

решить мою проблему

2
задан AyeVeeKay 29 August 2016 в 15:11
поделиться

1 ответ

Скорее всего, вы столкнулись с той же проблемой, что и с custom Parcelable реализациями . Перефразируя себя из этого сообщения в блоге: в основном, если основной процесс ОС должен изменить дополнительные функции Intent, этот процесс завершается, пытаясь воссоздать ваши объекты Serializable как часть настройки дополнительных функций Bundle для модификации.

Наиболее раздражающей частью является то, что этот код работал ранее на моем Nexus 6P (Lollipop 6.0 API23).

Поведение будет отличаться в зависимости от версии Android, тем, как вы используете PendingIntent и, возможно, прошивку / ПЗУ. Не предполагайте, что ваша текущая реализация будет надежной на любой версии Android.

Ваш единственный вариант - не помещать Serializable непосредственно в Intent extra. Используйте другое, чем Serializable (например, вложенный Bundle), преобразуйте Serializable в byte[] и т. Д.

Это примерное приложение демонстрирует последнее подход, примененный к объекту Parcelable. тот же базовый метод должен работать для Serializable. (подсказка шляпы к AyeVeeKay для ссылки в комментариях).

13
ответ дан CommonsWare 19 August 2018 в 00:25
поделиться
  • 1
    Спасибо за разъяснения. Я применил подход, похожий на маршаллинг / unmarshalling объекта Parceable, для сериализации / десериализации объекта Serializable с использованием фрагмента stackoverflow.com/a/3736247/5292948 – AyeVeeKay 29 August 2016 в 16:06
  • 2
    @AyeVeeKay: Да, это должно иметь тот же чистый эффект: не дать вашему классу отказаться от процессов, которые его не будут иметь. – CommonsWare 29 August 2016 в 16:14
  • 3
    Еще один отличный ответ. Спасибо @CommonsWare – Fivos 19 May 2017 в 09:19
Другие вопросы по тегам:

Похожие вопросы: