Почему существует ограничение на размер бандла и что происходит при его превышении
Что проверяют
Понимаете ли вы, что Bundle уезжает в чужой процесс через Binder, и знаете ли, чем заканчивается попытка положить туда много данных. Заодно смотрят, уточните ли вы, о каком бандле речь: о состоянии экрана или о наборе для магазина.
Как отвечать
Начать стоит с уточнения. Если про Bundle, то ограничение идёт не от Android как такового, а от Binder: данные между процессами сериализуются и кладутся в буфер транзакций, общий на процесс и измеряемый примерно мегабайтом. onSaveInstanceState, Intent со сложными дополнениями, ответы системных сервисов проходят через этот буфер, потому что состояние экрана хранит системный процесс, а не ваш.
При превышении прилетает TransactionTooLargeException. Неприятность в том, что бросает его чужая сторона, поэтому исключение приходит не там, где вы клали данные, а при попытке завершить транзакцию.
Что делать: в Bundle класть идентификаторы и позицию прокрутки, а не сами данные; список восстанавливать из базы или кэша по идентификатору; поворот переживать через ViewModel, а SavedStateHandle держать на случай смерти процесса и не складывать в него модель экрана целиком; между экранами передавать ключ, а не объект.
Если же вопрос про сборку для магазина, там ограничение на размер скачивания, а лечится оно динамическими модулями, ресурсами по требованию и урезанием библиотек.
Где спотыкаются
Называют лимит ровно мегабайтом на один Bundle. Буфер общий на процесс и делится со всеми транзакциями сразу, включая системные, поэтому падение случается и на сотнях килобайт, чаще под нагрузкой. Значит, воспроизводится плохо и прилетает уже из продакшена.
Второе: складывают в onSaveInstanceState весь список из адаптера, объясняя это поворотом экрана. Поворот переживает ViewModel, а сохранённое состояние нужно только на случай, когда процесс убили ради памяти, и быть оно должно минимальным.
Третье: оборачивают вызов в try и catch и считают, что починили. Данные всё равно не доехали, экран восстановится пустым, а часть таких транзакций роняет системная сторона, где перехватывать уже нечего.