Преимущества использования Bundle вместо прямого намерения putExtra () в Android

В моем приложении Android я всегда использую putExtra() прямого putExtra() classа Intent для передачи любого количества значений в новую Activity .
Как это:

 Intent i = new Intent(this, MyActivity.class); i.putExtra(ID_EXTRA1, "1"); i.putExtra(ID_EXTRA2, "111"); startActivity(i); 

Я знаю о Bundle в Android, и я видел, как люди используют Bundle для передачи значений в новую Activity .
Как это:

 Intent intent = new Intent(this, MyActivity.class); Bundle extras = new Bundle(); extras.putString("EXTRA_USERNAME","my_username"); extras.putString("EXTRA_PASSWORD","my_password"); intent.putExtras(extras); startActivity(intent); 

Здесь у меня есть 2 сомнения.
Почему я должен использовать Bundle если я могу передавать значения в новую Activity , помещая их непосредственно в Intent ?
Каковы преимущества использования Bundle вместо прямого Intent putExtra() ?

Это мало (если есть разница). Код с использованием дополнительного пакета немного тяжелее (он не будет иметь никакого значения в каком-либо практическом приложении) и немного проще в управлении, будучи более общим.

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

[Обновить]

Прояснение (из-за некоторых других ответов).

Экстра это дополнительный пакет, который каждый Intent может нести (но не обязательно), поэтому нет альтернативы между использованием пакета или его использованием. Вы используете пучок в любом случае.

При первом использовании putExtra mExtras пакет mExtras внутри Intent, и все следующие putExtra делегируются ему. Сам комплект недоступен для вас (это по дизайну, чтобы избежать определенных ошибок).

putExtras не помещает ваш комплект в Intent. Вместо этого он копирует его в текущий пакет намерений (или создает его, как и с putExtra ). Вот почему он немного тяжелее (у вас есть два пучка вместо одного и оплата цены на копирование).

Суть – если вы используете putExtras , вы все равно не сможете получить доступ к реальному пакету внутри намерения. НО – у вас есть копия для всего, что вы можете с ней сделать. Как держать вокруг, чтобы копировать в другое намерение (если вы отправляете много подобных намерений).

Дополнительное преимущество : после ввода данных в Bundle вы можете отправлять одни и те же данные несколькими способами. (Только в случае, необходимо отправить несколько намерений).

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

В большинстве случаев это бесполезно, так как вы хотите передать наименьшее возможное количество данных (обычно всего пару строк, идентификатор …)

вы можете направить это, а также это .

вы можете отправить несколько или кучу данных в один комплект и отправить его через Intent. или другой способ – добавить несколько операторов PutExtra ().

И нет никаких важных различий в моих знаниях.

  • System.exit (0) не закрывает все мои действия?
  • Как перезапустить Android-активность
  • Android - startActivityForResult сразу же запускает onActivityResult
  • android как создать свою собственную деятельность и расширить ее?
  • onActivityResult С launchMode = "singleTask"?
  • Как передать объект из одной активности в другую на Android?
  • Android - возврат к предыдущему действию с различным значением Intent
  • Передача JSONObject в другое действие
  • Две активности запуска
  • Перезагрузка на Android
  • Помощь с передачей ArrayList и разумной активностью
  • Interesting Posts

    Неинтерактивный ssh ​​sudo … запрашивает пароль в виде простого текста

    Дизайн пользовательского интерфейса Blackberry – настраиваемый пользовательский интерфейс?

    Как отключить Skype от использования портов HTTP или HTTPS 80 и 443?

    Как форматировать строку даты в java?

    Ошибка Java: не удается сделать статическую ссылку на нестатический метод

    Запуск пакетного файла с планировщиком задач Windows

    Сеть Wi-Fi не обнаруживается на Lenovo G470

    Цвет фона элемента меню навигации для выбранного элемента

    Скрипты для сайтов в стилях CSS

    Как использовать индикатор выполнения WinForms?

    Какой HTML5 сброс CSS вы используете и почему?

    Что такое возврат каретки, перевод строки и фид?

    Получить последние 10 строк очень большого текстового файла> 10 ГБ

    Android Studio – автоматическое завершение и другие функции, не работающие

    Есть ли способ отключить конкретный JS-скрипт с определенного веб-сайта?

    Давайте будем гением компьютера.