Я не уверен, что у вас правильный дизайн в первую очередь. Попытка разыграть MainActivity не является хорошей практикой. Это шаг к тому, чтобы сделать его классом Бога.
Я не уверен, какой смысл отправлять Сериализуемый объект. В целом, более вероятно, использовать некоторые начальные значения или строки. Если есть что-то тяжелое, зачем это проходить? И что меня беспокоит, так это то, что вы говорите, что хотите использовать что-то «инициализированное» в MainActivity, что заставляет меня думать, что вы не пытаетесь передавать данные, а получаете доступ к состоянию MainActivity из другого Activity, что является плохой практикой.
Представления должны представлять данные и уведомлять о таких событиях, как щелчки некоторого «другого кода». Ничего больше. Вы можете иметь какой-то одноэлементный класс и изменять его состояние в зависимости от действий в первом упражнении. Затем из второго действия, скажем, у вас есть MVVM, вы создаете ViewModel и наблюдаете его, ViewModel в его init {} может вызывать общий синглтон и может передавать данные обратно во второе действие через LiveData, или лучше просто сказатьэто что "показать" пользователю.
Надеюсь, это поможет.