A Bundle
равно Parcelable
.Parcelable
объекты предназначены для передачи через границы процесса.Таким образом, вы увидите, что Bundle
и другие Parcelable
объекты часто используются в межпроцессном взаимодействии (IPC), в том числе:
Intent
дополнительные функции, поскольку мы используемIPC каждый раз, когда мы запускаем действие, запускаем службу и т. Д.
состояние сохраненного экземпляра, так как это состояние сохраняется в процессе основной ОС на случай, если наш собственный процесс завершится
Произвольные объекты не могут быть переданы через границы процесса.
Кроме того, Bundle
является классом каркаса.Все приложения, а также основная ОС работают по одному и тому же определению.В результате Bundle
может передаваться из одного приложения в другое, и оба приложения могут использовать содержимое Bundle
(при условии, что его содержимое само по себе является простым примитивом или основано на других определениях общих классов).
Даже если вы создадите свой собственный класс Parcelable
, вы можете столкнуться с проблемами, когда другие приложения попытаются получить доступ к этому объекту, так как у них не будет определения вашего класса.
Поскольку в вашем собственномapp - особенно если вы используете подход с одним пользовательским интерфейсом - единственный раз, когда вам нужно работать с Bundle
, это для сохраненного состояния экземпляра.Если вы используете ViewModel
или аналогичные способы обработки изменений конфигурации, вам не нужно много хранить в сохраненном состоянии экземпляра Bundle
.