Класс Bundle зачем он?
Класс Bundle (с английского — сверток) по сути представляет собой враппер (оболочку) над коллекцией ArrayMap для создания более комфортного в работе контейнера для элементов разных типов, в котором можно разместить любые Parcelabe-объекты и примитивные типы. Класс является потокобезопасным и может использоваться для передачи значений между разными потоками. Доступ к элементам этой коллекции осуществляется, как и в ArrayMap , по парам ключ-значение. Дополнительно класс предоставляет методы по размещению и извлечению типизированных данных и некоторые другие возможности.
Класс широко используется для группировки в одну сущность разнотиповых данных (как например строки, простые числа, булевы значения и др.) для последующей передачи как между отдельными методами одного объекта, так и разными объектами и даже разными компонентами одного приложения в основном в случаях, когда типы передаваемых данных заранее не известны — то есть мы можем передат строку, а можем и число или чт то другое в каждом отдельном случае (в остальных случаях удобнее использовать передачу через конструктор или отдельные аргументы метода).
Так же такой контейнер удобно использовать для передачи результата работы метода, когда нужно вернуть несколько значений разного типа, а создавать POJO-модель нет особого смысла.
Класс широко используется системой, в том числе и для хранения значений при смене состояния, но сам класс не предоставляет функционал такого сохранения, он лишь оболчка для группировки данных в работе других механизмов.
В чем разница между Bundle и Intent?
Bundle – это класс, реализующий ассоциативный массив, т.е. хранящий пары ключ-значение. Имеет get() и put() методы для примитивов, строк и объектов, которые реализуют интерфейсы Parcelable и Serializable.
Bundle используется для передачи данных между базовыми компонентами.
Также рекомендуется использовать Bundle для передачи данных между процессами, потому что Bundle оптимизирован под маршалинг/демаршалинг.
Intent описывает операцию к исполнению. Интенты используются при старте базовых компонент, например startActivity(intent: Intent) и startService(intent: Intent) .
Intent так же как и Bundle имеет get() и put() методы и используется для передачи данных. Но Intent не реализует ассоциативный массив, а лишь предоставляет интерфейс. Intent имеет внутри объект Bundle, куда делегируются переданные пары и уже Bundle используется для хранения и передачи данных.
Что такое Android App Bundle и в чём его отличие от APK
Наверное, все знают, что APK – это формат, в котором приложения для Android размещаются в Google Play и на сторонних платформах. Но если при загрузке из официального каталога установка происходит автоматически, и пользователь никак не взаимодействует с установочным файлом, то при использовании альтернативных площадок, всё происходит несколько иначе. Сначала вы скачиваете сам APK-файл и уже вручную его устанавливаете. Но некоторое время назад на альтернативных платформах, помимо привычных APK-файлов, стали появляться какие-то Android App Bundles. Разбираемся, что это и зачем вообще нужно.

Android App Bundle — это как APK, только лучше
Android App Bundle – это новый, так называемый «пакетный», формат приложений для Android. В отличие от APK, которые для успешной установки должны соответствовать параметрам смартфона, на который их устанавливают, AAB – это универсальный формат, который уже содержит в себе сведения обо всех устройствах и разных сочетаниях железа сразу.
Если вы откроете APKMirror – пожалуй, самый популярный альтернативный сайт с приложениями, — и перейдёте на страницу любого приложения, то увидите, что у него есть несколько разных версий APK. Каждая из них соответствует смартфонам с определёнными особенностями. Обычно это версия Android, тип процессора или показатель DPI, но бывают и другие.
Как установить Android App Bundle

Посмотрите, сколько APK-файлов у Instagram. Их все заменяет один пакет AAB
Android App Bundle представлены только в единственном экземпляре. Потому что они изначально созданы универсальными и совместимыми с различными устройствами, независимо от сочетаний их аппаратного обеспечения и технических характеристик. При установке пакет сам выдаст смартфону подходящий установочный файл, и тот его установит.
Что такое Camera2 API, зачем это нужно и как узнать, поддерживает ли её ваш смартфон
Поскольку Android App Bundle – это пакет различных компонентов, то они поставляются не в виде целостного файла, а в виде ZIP-архива. Это несёт как минимум одно существенное ограничение – AAB нельзя установить так же просто, как обычные APK-файлы просто по нажатию. С AAB это не прокатывает. Поэтому для их установки необходим специальный клиент, который всё распакует и установит вам на устройство.
Я для этой цели пользуюсь клиентом APKMirror. С ним установка Android App Bundle выглядит вот так:
- Скачайте установщик APKMirror по этой ссылке (один раз);
- Найдите и скачайте приложение в формате Android App Bundle;

Установить AAB как обычный APK-файл нельзя
- Нажмите на архив и откройте его с помощью APKMirror;
- Следуйте инструкциям, которые установщик выведет на экран.
Чем Android App Bundle лучше APK
Несмотря на то что что пакет AAB содержит базовый APK-файл, даже распаковав архив вручную, вы всё равно не сможете его установить. Дело в том, что пакет обычно включает в себя ещё ряд дополнительных компонентов, которые необходимы приложению для нормальной установки. Поэтому тут строго обязательно нужно-приложение установщик, которое работает со сторонними AAB. Так что Google Play для этой роли точно не годится.

В августе 2021 года Google полностью переходит на формат AAB
Может показаться, что всё это слишком сложно и запоминать всю последовательность действий, описанных выше, не имеет смысла. Однако это большое заблуждение, потому что уже в августе 2021 года Google откажется от использования классических APK. То есть все новые приложения и те, которые обновятся к тому времени, уже не будут иметь выделенных APK, а будут представлены на сторонних площадках только в виде AAB.
Google настаивает на использовании Android App Bundle, потому что они, несмотря на универсальность, более легковесны, чем классические APK, и их легче поддерживать. Формат AAB позволяет разработчикам создать только одну сборку приложения, которую будет проще обновлять, контролировать и совершенствовать. Так что учитесь работать с «бандлами», иначе останетесь без стороннего ПО.

Теги
- Компания Google
- Новичкам в Android
- Приложения для Андроид
- Разработка приложений
Наши соцсети
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Что такое «Android App Bundle»
Android App Bundle — это формат распространения приложений для Android, разработанный компанией Google. Он позволяет оптимизировать размер приложения и ускорить загрузку, так как отправляет только необходимые ресурсы для каждого устройства. App Bundle использует анализ данных и машинное обучение для определения того, какие ресурсы нужны большинству устройств, и отправляет только эти ресурсы. Это помогает уменьшить размер приложения и улучшить пользовательский опыт.