Почему комплекты используются в отличие от стандартных объектов? - PullRequest
0 голосов
/ 11 марта 2019

Почему в андроиде связки используются в отличие от классов? Конечно, это не очень эффективно. Я нахожу, что это также делает вещи действительно беспорядочными, так как вам приходится использовать множество статических ключей из классов, которые часто не имеют достаточной области видимости. Не очень интуитивно понятно.

Я уверен, что можно использовать дженерики, чтобы вам не приходилось слепо возвращать возвращаемые объекты.

1 Ответ

3 голосов
/ 11 марта 2019

A Bundle равно Parcelable.Parcelable объекты предназначены для передачи через границы процесса.Таким образом, вы увидите, что Bundle и другие Parcelable объекты часто используются в межпроцессном взаимодействии (IPC), в том числе:

  • Intent дополнительные функции, поскольку мы используемIPC каждый раз, когда мы запускаем действие, запускаем службу и т. Д.

  • состояние сохраненного экземпляра, так как это состояние сохраняется в процессе основной ОС на случай, если наш собственный процесс завершится

Произвольные объекты не могут быть переданы через границы процесса.


Кроме того, Bundle является классом каркаса.Все приложения, а также основная ОС работают по одному и тому же определению.В результате Bundle может передаваться из одного приложения в другое, и оба приложения могут использовать содержимое Bundle (при условии, что его содержимое само по себе является простым примитивом или основано на других определениях общих классов).

Даже если вы создадите свой собственный класс Parcelable, вы можете столкнуться с проблемами, когда другие приложения попытаются получить доступ к этому объекту, так как у них не будет определения вашего класса.


Поскольку в вашем собственномapp - особенно если вы используете подход с одним пользовательским интерфейсом - единственный раз, когда вам нужно работать с Bundle, это для сохраненного состояния экземпляра.Если вы используете ViewModel или аналогичные способы обработки изменений конфигурации, вам не нужно много хранить в сохраненном состоянии экземпляра Bundle.

...