Я использую липкие события в EventBus, чтобы передать мои «выбранные» объекты в предстоящее действие. Подробная активность позволяет пользователю «выбрать» другой объект для получения нового списка. Я хочу опубликовать еще одно закрепленное событие с тот же классом объектов еще раз в другой активности списка, но, насколько я понимаю, предыдущее закрепленное событие будет перезаписано. См. иллюстрацию примера внизу.
Каков рекомендуемый способ решения этой проблемы? Мне нужно иметь n-вложенные липкие события с тем же классом в EventBus.
Мне очень нравится иметь липкие объекты, это избавило меня от необходимости вручную подключать интерфейс Android Parcelable только для отправки объектов из одной живой активности в другую с помощью механизма Intent
. Я бы не хотел, чтобы меня заставляли идти и реализовывать Parcelable даже после получения полностью работающего EventBus только потому, что я не могу иметь вложенные липкие объекты!
Один из способов, который я придумал, состоял в том, чтобы поддерживать свой собственный стек объектов Item
в ArrayList в синглтоне, нажимая при погружении глубже (до startActivity) и выталкивая при откате (но где? onDestroy
не следует использовать), но подход кажется очень хрупкий для меня. Мне нужен надежный механизм — это основная навигационная точка для моего приложения.
- Список элементов, пользователь выбирает
Item
. Мы публикуем закрепленное событие с этимItem
и startActivity с классом подробного представления в Intent. - Пользователь просматривает детали и запрашивает список связанных элементов. Мы начинаем другую активность, показывающую список.
- Пользователь выбирает
Item
. Мы публикуем закрепленное событие с этим секунднымItem
и startActivity с классом подробного представления в Intent. ВторойItem
перезаписывает первыйItem
, и когда пользователь хочет перейти вверх по заднему стеку, он больше не доступен для чтения, вместо этого читается последний созданный закрепленный элемент.