2013-12-23 2 views
4

Насколько я понимаю, невозможно пройти простой объект List между Акциями без List, являющийся ArrayList. Возможно, я пропустил какой-то способ сделать это? Если нет, кто-нибудь знает, почему Google заставит пользователей использовать конкретные данные для реализации в своем коде?Почему вы не можете передавать List (NOT ArrayList) между действиями?

+1

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

+0

Я согласен с Грегом .. они, вероятно, оптимизировали эту конкретную реализацию –

+0

@RhinoFeeder извините неправильно прочитал сообщение. удалил мой предыдущий комментарий – Raghunandan

ответ

4

Вы можете передавать явные реализации, потому что они реализуют Serializable, в то время как их абстрактные и интерфейсы - нет.

Список и другие коллекции не являются Serializable, потому что это не их определение. Они предлагают выбор для их реализации, поскольку у вас также есть реализации списка, которые не являются Serializable.

Это важно, поскольку вы можете сохранить данные, которые не сохраняются для сериализации, в списке. В этих случаях вы можете выбирать реализации, которые являются лучшим выбором для этих данных, вместо того, чтобы принудительно выполнять «List» для сериализации.

+0

Этот третий абзац действительно, где мясо для меня по этой теме. Тогда это имеет смысл. Поэтому из-за того, как мы обрабатываем этот объект в Android, нам НЕОБХОДИМО «Serializable», а это значит, что нам нужно вызвать реализацию «List»? –

+0

Точно. Вам необходимо Serializable (или Parcable, пожалуйста, используйте это для своих собственных объектов), чтобы передать объект из Activity в Activity, поскольку это невозможно по ссылке. Serializable реализуется только в конкретных реализациях, а не на интерфейсах/рефератах. Это потому, что List просто не всегда требуется сериализуемым. Что и почему в обоих этих требованиях, вероятно, будут расширены разъяснения по всему Интернету, поэтому вы должны их прочитать. –

+0

Звучит потрясающе, поэтому один последний быстрый вопрос. Будет ли это приемлемой/хорошей практикой для этого? // Драйвер реализует подробный Список драйвера; protected void onSaveInstanceState (Bundle out) { outstate.putParcelableArrayList (KEY, новый ArrayList (драйверы)); } –

0

Потому что существует класс Application, который вы можете использовать для хранения ссылок на подобные вещи и многое другое.

Смежные вопросы