все о Android разработке @itchannels_telegram - 🔥 лучшие it каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books
💻 Создаем первое приложение с Jetpack Compose на Kotlin
Держите годное видео о том, как с помощью фреймворка Jetpack Compose создать проект в Android Studio.
📎 Кликабельный план ролика
📎 Само видео
@android_its
💻 О .not()
и !
в Kotlin
Мы довольно часто используем оператор .not()
, поскольку это более читабельно, чем !
.
Но есть одна вещь, которую оператор .not()
не может сделать — поглядите:
myEvents?.forEach { myEvent ->
if (!myEvent.events.isNullOrEmpty()) {
myEvent.events.find { it.type == eventType }
}
if (myEvent.events.isNullOrEmpty().not()) {
myEvent.events.find { it.type == eventType }
}
}
💻 Библиотека Scout — быстрый и безопасный DI на Kotlin
Scout — это библиотека, появившаяся как результат большого количества проб и ошибок. Пет-проекты с кастомными DI-контейнерами. Изучение каждого нового DI-фреймворка, который появлялся в комьюнити.
Держите полезную статью о том, как Scout создавалась и какие проблемы может решать.
Вот ещё некоторые факты из статьи:
*️⃣Библиотека Scout использует рефлексию для доступа к содержимому графа и предоставляет защищенные методы для обращения к нему.
*️⃣Валидация графа становится сложной из-за отказа от аннотаций, но может быть проверена в unit-тестах.
*️⃣Библиотека предлагает удобный и настраиваемый валидатор графа зависимостей.
📎 Читать подробнее
@android_its
💻 Отличия Sequence API vs Collection в Kotlin
Держите хорошее объяснение отличий между 2 этими понятиями.
⏩В статье рассматриваются примеры, которые помогают визуализировать разницу между Sequence API и обычными коллекциями.
⏩Последовательность — это итерируемый тип, с которым можно работать, не создавая ненужных промежуточных коллекций.
⏩Sequence API в Kotlin могут обрабатывать данные более эффективно, чем обычные коллекции.
📎Читать подробнее: [ru], [en]
@android_its
💻 Создание анонимного экземпляра интерфейса в Kotlin
⏩Если сразу к сути, то для создания экземпляра анонимного интерфейса в Kotlin применяется объектное выражение. Определите интерфейс непосредственно при инициализации переменной следующим образом:
val myInterfaceInstance = object : MyInterface {
override fun myFunction() {
// Ваш код здесь
}
}
myInterfaceInstance.myFunction()
myInterfaceInstance
мы присваиваем объект, используя ключевое слово object :
fun interface MySAMInterface {
fun myAction()
}
val myInterfaceInstance = MySAMInterface {
println("Смотрите, мама, я пишу код без использования рук!")
}
myInterfaceInstance.myAction()
💻 Своё расширение в Kotlin
⏩Можно ли организовать свое собственное расширение в Kotlin? Да, это можно сделать через Delegate
:
class MyString {
fun myPrint(text: String) {
println(text)
}
}
MyString
с методом myPrint()
. Допустим нам надо сделать собственное расширение printRealExt()
без использование встроенных в Kotlin возможностей:fun MyString.printRealExt(text: String) {
println(text)
}
interface ExtensionPrint {
fun printExt(text: String)
}
class ExtensionPrintImpl : ExtensionPrint {
override fun printExt(text: String) {
println(text)
}
}
Delegation
делегируем этот метод:class MyString : ExtensionPrint by ExtensionPrintImpl() {
fun myPrint(text: String) {
println(text)
}
}
val myString = MyString()
myString.printRealExt("Real ext")
myString.printExt("Text from ext")
interface OneClassInterface {
fun someOne()
}
class OneClassImpl : OneClassInterface {
override fun someOne() {
println("some One")
}
}
interface TwoClassInterface {
fun someTwo()
}
class TwoClassImpl : TwoClassInterface {
override fun someTwo() {
println("someTwo")
}
}
class DerivedClass : OneClassInterface by OneClassImpl(), TwoClassInterface by TwoClassImpl()
Вариант для тех, кто ищет виртуальный сервер с хорошей веб-защитой — Aéza:
– Виртуальные сервера до 6.0 ГГц на лучших процессорах;
– Профессиональная фильтрация атак StormWall;
– Круглосуточная поддержка;
– Anycast фильтрация;
– Низкие цены;
– 15% кешбэка по ссылке.
Бесконечно можно смотреть на три вещи: на огонь, воду и скидку от Aeza!
Говорят: твоё от тебя не уйдет. А зачем ждать? Динозавры тоже ждали и остались в прошлом
Используй 50% скидку и погнали в будущее!
Кроме того, сейчас Aéza раздает личные бесплатные сервера, забираем тут. Регистрация, подписка, платежи не потребуются.
Реклама. Индивидуальный предприниматель Лобанов Леонид Константинович. ИНН 781625705648 erid: LjN8KEr3S
🖥 Package Search — крутой плагин для поиска библиотек для Java и Kotlin прямо из редактора.
По умолчанию он поддерживает поиск в следующих менеджерах пакетов: Maven, Gradle и Amper.
📌 Github
@android_its
📱 Apple пообещала упростить перенос данных с iPhone на Android-устройства в ЕС к осени 2025 года
Apple намерена упростить переход с iPhone на Android-устройства в соответствии с требованиями Закона о цифровых рынках ЕС, который уже вступил в силу.
Производитель изложил свой план относительно соблюдения нового закона ЕС в документе. Новое положение направлено на усилении конкуренции в экосистеме приложений и требует от Apple ослабления контроля над App Store и iOS.
Мера Apple должна помочь поставщикам других операционных систем создать более эффективные решения для передачи данных с iPhone на смартфон стороннего производителя. Корпорация не использует в документе название Android, однако мобильная ОС Google получит наибольшую выгоду от нововведения.
В конце 2024 года или начале 2025 года Apple также представит инструмент для экспорта данных браузера в новый браузер на том же устройстве.
В настоящее время пользователи Android могут использовать iOS-приложение — Switch to Android
— для переноса важных данных, включая контакты, календари, фотографии, видео, сообщения и многое другое. Однако некоторые менее важные данные по-прежнему нельзя экспортировать.
@mobdevelop
📱Советы по Android-разработке
Узнали у middle и senior разработчиков, что нужно учить каждому Android-разработчику. Спросили, какие фреймворки, библиотеки и инструменты безнадёжно устарели, а какие актуальны.
〰️ Какие библиотеки, инструменты, фреймворки Android уже устарели?
Андроид развивается очень динамично, поэтому, многое из того, что было популярно 5 лет назад уже не используется.
Конечно же сразу приходит на ум RxJava, про нее был каждый второй доклад на любой конференции 5-6 лет назад. А теперь ее изредка спрашивают на собеседованиях. На замену ей пришли Kotlin Coroutines.
Java как язык разработки под андроид остался, наверное, только в каких-то старых проектах-динозаврах. Kotlin это новый стандарт уже лет 6.
С появлением Jetpack Compose UI код использующий стандартные Android Views стал легаси. Многие приложения сейчас Compose First, и все новые фичи тоже разрабатываются на Compose.
Архитектура презентационного слоя так же изменилась, всё меньше можно увидеть MVP, а MVVP и MVI стали де факто стандартами разработки.
〰️ Какие библиотеки Android нужно знать в 2024 году?
Если мы возьмем более менее стандартное приложение со стандартными подходами, то наверняка там будут эти библиотеки: Retrofit 2, Dagger2/Hilt, Kotlin Coroutines, Jetpack ViewModel, Room, Lifecycle. Но стоит помнить, что библиотеки приходят и уходят, а фундаментальные знания остаются. Человеку, освоившему фундамент будет гораздо легче освоить какую-либо библиотеку.
〰️ Какие фреймворки Android нужно знать в 2024 году?
В Андроид немного фреймворков, наверное главный и самый нашумевший в последнее время это Jetpack Compose. Так же стоит знать архитектурные подходы MVI/MVVM, MVP, плюсы и минусы их работы.
〰️ Какие инструменты Android нужно знать в 2024 году?
Швейцарский нож Android разработчика в 2024 это Kotlin, Kotlin Coroutines, Jetpack Compose, MVVM/MVI, Google Jetpack Libraries, REST, Single Activity, Dagger 2, Retrofit 2. Зная этот стек можно будет легко разобраться в 95% приложений.
@android_its
🖥 𝗧𝗲𝘀𝘁𝗚𝗲𝗻-𝗟𝗟𝗠 для написания тестов Kotlin 💻
Meta разработала 𝗧𝗲𝘀𝘁𝗚𝗲𝗻-𝗟𝗟𝗠 — инструмент, использующий 2 LLM Meta, для дополнения существующих тестовых классов Kotlin для кода Android.
Цель 𝗧𝗲𝘀𝘁𝗚𝗲𝗻-𝗟𝗟𝗠 — генерировать дополнительные тестовые случаи, охватывающие ранее пропущенные сценарии, и улучшить общее покрытие тестами.
TestGen-LLM представляет собой пример гарантированной автономной разработки программного обеспечения на основе LLM (Assured Offline LLMSE), сфокусированной на внедрении LLM в более широкий рабочий процесс разработки программного обеспечения, чтобы рекомендовать комплексные улучшения программного обеспечения (и чтобы со временем заменить всех и захватить мир)
TestGen-LLM гарантирует, что сгенерированные тестовые классы не только корректно построены, но и надежно проходят все тесты, не внося ненужной "шелухи", и улучшают покрытие.
Это отличает TestGen-LLM от других методов генерации кода и тестов на основе LLM.
📁Подробнее можно ознакомиться в этой статьей Arxiv
@android_its
🖥 Некоторые подробности о 1 предварительной версии Android 15 для разработчиков
Проект доступен только на смартфонах и планшетах Pixel (6/6 Pro/6a/7/7 Pro/7a/Tablet/Fold/88 Pro). Также Developer Preview можно протестировать через эмулятор Android Studio.
Обновления в Android 15 Developer Preview 1:
🔵регулировка яркости в панели быстрых настроек теперь работает с тактильной отдачей при перемещении ползунка;
🔵можно отключить виброотклик при работе с виртуальной клавиатурой;
🔵функция «Снижение громкости уведомлений» для приложений, которые присылают много оповещений подряд;
🔵появились новые варианты взаимодействия с программной платформой на устройствах с гибким дисплеем;
🔵внесен ряд оптимизаций для снижения энергопотребления ресурсоемких приложений; повышена энергоэффективность для приложений, долго работающих в фоновом режиме;
🔵новая версия Privacy Sandbox для ограничения работы приложений с таргетированной рекламой;
🔵новая объединенная платформа Health Connect, FileIntegrityManager с fs-verity в ядре Linux (криптошифрование для защиты данных);
🔵теперь можно демонстрировать только экран приложения, а не всего интерфейса устройства;
🔵различные улучшения для разработчиков.
Процесс тестирования Android 15 разбит на три этапа: Developer Preview — два релиза (в феврале и марте); Beta — два релиза (в апреле и мае); Platform Stability — два релиза (в июне и июле).
Финальная версия Android 15 выйдет в конце лета или начале осени 2024 года, подробнее почитать можно [тут] и [тут]
@android_its
Новый Compose урок по анимации
Рассматриваем доступные нам AnimationSpec: tween, spring, keyframes, repeatable. Там в целом и так все понятно, но пропустить эту тему я не мог.
Плюс, довольно подробно разбираем, что такое Easing в tween. И создаем свою несложную реализацию этого механизма.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Предварительный выпуск Android 15 https://opennet.ru/60616/
Читать полностью…🖥Oblivion - Unofficial Warp Client for Android
Oblivion обеспечивает безопасный, оптимизированный доступ в интернет через приложение для Android, написанное на Java с использованием технологии cloudflare warp.
Используя bepass-sdk
и WireGuard
, инструмент предназначен для быстрого и конфиденциального доступа в интернет.
▪Github
@javatg
💻 Отличная шпаргалка по функциям в Kotlin
⏩Держите отличную презентацию по функциям в Kotlin, которая поможет повторить самое важное
Затрагиваются такие темы:
— функция main, точка входа
— компактные функции
— лямбды и функции высшего порядка
— список фильтров
— нетерпеливые и ленивые фильтры
Описано подробно и понятно, рекомендую
📎 Сайт со слайдами
@android_its
💻 Отличная статья-презентация о работе с шаблонизаторами Kotlin
⏩В статье рассматривается использование шаблонизатора Pebble для формирования HTML-документов и его особенности, включая поддержку фильтров, тегов и наследования шаблонов.
⏩Описаны условные конструкции, проверки и наследование шаблонов в рамках использования шаблонизатора Pebble.
⏩Обсуждаются принципы работы с шаблонами и передача списков данных в шаблоны.
⏩Параллельно рассматриваются различные аспекты разработки приложений на Kotlin, включая императивный, объектно-ориентированный и функциональный синтаксис; рассматривается работа с функциями в Kotlin и их объектная природа.
⏩Кроме этого обсуждается вопрос null-безопасности в Kotlin и удобные средства для обработки этой ситуации.
📎 Онлайн-презентация
@android_its
💻 Золотой век Kotlin, и какое будущее его ждёт
— «В компании Infobip с 2017 года и до сегодняшнего дня идет золотой век Kotlin. Будет ли он продолжаться, зависит исключительно от JetBrains и их способности внедрять инновации в Kotlin»
Полезная статья, в которой затрагиваются важные вещи, автор рассуждает о том, почему одни технологии сменяют другие, почему взлетевшие Scala и Groovy не так популярны сегодня и т.д.
Разбираются достоинства и недостатки Kotlin:
⏩Плюсы Kotlin
— Интероперабельность с Java
— Корутины
— Структура данных и сопоставление шаблонов
— Работа с Null
— Другие особенности
⏩Минусы Kotlin
— Интероперабельность с Java
— Экосистема Kotlin
— Рабочая сила
— Отсутствие прогресса
📎 Статья
@android_its
Android 15 Developer Preview 2!
Google выпустили предварительную сборку Android 15 Developer Preview 2.
🔸 Добавлен интерфейс для работы с спутниковой связью. Теперь Android 15 поддерживает обмен сообщениями SMS, MMS и RCS через спутник.
🔸 Новый раздел - "Передача аудио". Предполагается, что пользователь сможет передавать звук через Bluetooth одновременно на несколько наушников и динамиков с поддержкой Bluetooth. Однако на данный момент эта функция не работает.
🔸 "Режим веб-камеры" теперь поддерживает режим HQ-качества изображения.
🔸 Обнаружение записи экрана. Теперь, если приложение записывает ваш экран, вы получите уведомление об этом.
🔸 В разделе "О приложении" появилась функция "Отправить в архив". Архивация позволяет освободить до 60% пространства, сохраняя личную информацию.
Более подробную информацию о других изменениях можно найти в блоге Google. Заводские образы доступны по ссылке (начиная с Pixel 6).
https://developer.android.com/about/versions/15/download
@android_its
💻 Работа с интерфейсами Kotlin: правильная инициализация
⏩В Kotlin интерфейсы не имеют конструкторов и не способны создавать экземпляры сами по себе. Они выступают в качестве шаблонов для классов, которые обязаны их реализовывать, предлагая конкретные реализации абстрактных методов, предусмотренных интерфейсом. Вот наглядный пример:
interface MyInterface {
fun myFunction()
}
class MyClass : MyInterface {
override fun myFunction() {
println("Пришло время действовать!")
}
}
val myObject = MyClass()
myObject.myFunction()
Годная инфа для Android- и мобильных разрабов в целом
В этой таблице собраны особенности магазинов приложений, полезно учитывать при деплое
📎 А вот полезная статья в тему про деплой Flutter-приложений
@android_its
💻 Создание анонимного экземпляра интерфейса в Kotlin
▶️Если в двух словах, то для создания экземпляра анонимного интерфейса в Kotlin применяется объектное выражение. Определите интерфейс непосредственно при инициализации переменной так:
val myInterfaceInstance = object : MyInterface {
override fun myFunction() {
// Ваш код здесь
}
}
myInterfaceInstance.myFunction()
myInterfaceInstance
мы присваиваем объект, используя ключевое слово object :
. 📱Неплохой ролик с обзором возможностей фреймворка Ultron
Ultron используется для тестирования Android UI и Compose
Некоторые из преимуществ Ultron:
⏩Исключительная поддержка Compose
⏩Готовая генерация отчета Allure
⏩Простой синтаксис
⏩Архитектурный подход к разработке UI-тестов
⏩Возможность легко расширять фреймворк своими собственными операциями
⏩Ускоренное выполнение операций в UI Automator
⏩Можно создавать кастомные assertion'ы
Выглядит довольно перспективно, можете затестить)
@android_its
💻 Хорошо разбираешься в Kotlin? Готов по полочкам разложить, чем он отличается от Java? Проверь свои знания на этих 10 вопросах
⏩Что из этого в настоящее время не поддерживается в Kotlin?
[x] JVM
[x] JavaScript
[x] LLVM
[_] .NET CLR
⏩Какое выражение Kotlin эквивалентно такому int x = a ? b : c
из Java?
[x] val x = a ?: b, c
[x] val x = if (a) b : c
[x] val x = a ? b : c
[_] val x = if (a) b else c
⏩Что применимо для следующего объявления класса?class Person (val name: String)
[x] Он package-private
[x] Он может быть расширен другими классами
[_] Он public
[x] У него приватное свойство "name"
⏩Есть ли у Kotlin примитивные типы данных, такие как int
, long
, float
?
[x] Нет, Kotlin не имеет и не использует примитивные типы данных.
[_] Нет, не на уровне языка. Но компилятор Kotlin использует примитивы JVM для лучшей производительности.
[x] Да, но Kotlin всегда конвертирует их в не примитивные аналоги.
[x] Да, Kotlin в этом отношении похож на Java.
⏩Что такое to
в этом ниже примере:val test = 33 to 42
[_] Инфиксная функция, создающая пару (33, 42)
[x] Ключевое слово Kotlin для создания пары (33, 42)
[x] Ключевое слово для создания диапазона от 33 до 42
[x] Опечатка
⏩Какое из объявлений функций является валидным?
[x] int sum(int a, int b)
[x] int sum(a: Int, b: Int)
[x] function sum(a: Int, b: Int): Int
[_] fun sum(a: Int, b: Int): Int
⏩В чем ключевое отличие Iterable<T>
и Sequence<T>
в Kotlin?
[x] Iterable<T>
работает только с immutable
коллекциями, Sequence<T>
применим к mutable
[x] Нет никакой разницы, т. к. Sequence<T>
аналог Iterable<T>
[_] Последовательности обрабатываются лениво, итераторы жадно
[x] Последовательности обрабатываются по очереди, итераторы параллельно (многопоточно)
⏩Чего не предлагает dataclass
?
[x] Авто-генерируемый метод toString()
[x] Метод copy(...)
, для создания копии экземпляров.
[_] Автоматическое преобразование из/в JSON
[x] Авто-генерируемые методы hashCode()
и equals()
⏩Что выведет следующий код?
val listA = mutableListOf(1, 2, 3)
val listB = listA.add(4)
print(listB)
[1, 2, 3, 4]
True
Unit
a
и b
?
var a: String? = "KotlinQuiz"
var b: String = "KotlinQuiz"
a
является volatile
, как в Javab
является final
и не может быть измененоa
является final
и не может быть измененоb
никогда не сможет стать null
📱Android Studio Iguana стала стабильной
✨ На днях Google выпустил Android Studio Iguana в канале стабильных релизов. Благодаря таким функциям, как поддержка системы контроля версий в App Quality Insights, новой встроенной поддержки создания базовых профилей для приложений Jetpack Compose, эта версия должна улучшить ваш рабочий процесс разработки и оптимизировать ваши приложения.
Среди новых функций Android Studio Iguana:
*️⃣Интеграция системы контроля версий в App Quality Insights
*️⃣Просмотр вариантов сбоев Crashlytics в App Quality Insights
*️⃣Проверка доступности и адаптивности дизайна Jetpack Compose
*️⃣Прогрессивный рендеринг для предварительного просмотра Compose
*️⃣Обновленная платформа Intellij
*️⃣Шаблоны для Baseline Profiles
*️⃣Проверка изменений конфигурации с Espresso Device API
*️⃣Pixel 8 и Pixel 8 Pro в Android Emulator (34.2)
*️⃣Поддержка Gradle Version Catalogs
*️⃣Интеграция Google Play SDK Index
*️⃣Предупреждение о неподдерживаемой compileSdk
⏩Загрузите Android Studio Iguana уже сегодня и воспользуйтесь новейшими функциями, которые оптимизируют ваш рабочий процесс и помогут создавать лучшие приложения.
@android_its
🖥 Compose Investigator — полезный инструмент для Android-разработчика
Compose Investigator может выполнять следующие задачи:
🔵сообщает, если Composable пропущен во время рекомпозиции
🔵сообщает, если аргументы составного элемента изменились и были перекомпонованы. Он также может сравнить значения до и после изменения
🔵сообщает, были ли изменены значения состояния внутри Composable. Также можно сравнить значения до и после изменения
🔵получает стек вызовов, ведущий к вызову Composable. Это помогает определить конкретный Composable, который перекомпонуется, когда один и тот же Composable используется повторно в нескольких местах
🖥 GitHub
@android_its
Old but gold: Android-разработка для новичков
Добротный материал с подборкой 20+ ресурсов для старта в карьере мобильного разработчика. Подборка хоть и 2023 года, но начинающим — самое то: https://habr.com/ru/companies/yandex_praktikum/articles/738638/
#android #начинающим
🖥 Гайл по Реврерс-инжинирингу Android-приложений
Apk.sh — это полезный Bash-скрипт, который облегчает реверс-инжиниринг Android-приложений, автоматизируя некоторые повторяющиеся задачи, такие как извлечение, декодирование, восстановление и исправление APK.
Он в использует apktool
для дизассемблирования, декодирования и восстановления ресурсов и немного bash для автоматизации процесса инъекции гаджетов frida.
Особенности
– патчинг APK для загрузки frida-gadget.so при запуске
– поддержка пакетов приложений/разделенных APK
– разборка ресурсов до почти оригинального вида с помощью apktool
– восстановление декодированных ресурсов обратно в бинарный APK/JAR с помощью apktool
– подпись apk с помощью apksigner
– поддержка нескольких архитектур (arm, arm64, x86, x86_64)
– не требуется рутованное Android-устройство
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Flutter и ГОСТ TLS
— Трагические микрозаймы, украденные креды: какие Android-зловреды мы обнаружили в официальных маркетах
— Двигай рукой справа налево: адаптация интерфейса в Android приложении под RTL в XML и Jetpack Compose
— Создание кастомного React Native компонента Switch с помощью библиотек Reanimated и Gesture Handler (Часть 2)
— Как реализовать App shortcuts в Android
— Что ждёт мобильную разработку в 2024 году
— Собирательный образ Junior Android Developer. Какой он в 2024?
— Техническое собеседование инженеров мобильной разработки в RuStore
— Изи freestyle android приложения на Kivy (Python), Google collab и ваш не любимый ChatGPT
— Мобильная разработка за неделю #525 (5 — 11 февраля)
— A step-by-step tutorial in codelab format for Android UI testing
— Power your Flutter App with Gemini AI ✨
— Testing with Accessibility Scanner
— A bad and better unit test example for Android network layer with Retrofit | Video
— Should I update the Kotlin version of the Android app?
— Top 10 Healthcare App Development Tips & Tricks in 2024
— Efficient File Transfer from Android to Mac Using ADB
Посмотреть:
🌐 C# полный курс 2024. Урок 7 Условия (⏱ 15:06)
🌐 Телеграм бот приема заявок и рассылок! Огромный прирост подписчиков! (⏱ 17:10)
🌐 Запрещенный синтаксис #Python, за который вас уволят! (⏱ 00:50)
🌐 C# полный курс 2024. Урок 6: Ссылочные типы переменных c# (⏱ 05:42)
🌐 C# полный курс 2024. Урок 5: Переменные (⏱ 10:52)
🌐 C# полный курс 2024. Урок 8 Switch Case (⏱ 08:45)
🌐 Полное собеседование React разработчика 2024🧑🏻💻 (⏱ 01:09:44)
Хорошего дня!
@android_its
🤨Какую архитектуру выбрать — с единой или множеством Activity?
В постоянно развивающейся сфере разработки Android-приложений приходится принимать ответственные решения, определяющие пользовательский опыт и общую архитектуру приложения. Одним из таких решений является выбор структуры Activity — фундаментальных строительных блоков любого Android-приложения.
Перед разработчиками возникает дилемма: упрощенный подход с единой Activity (Single Activity), включающей множество Фрагментов, или разрозненная природа множества Activity (Multiple Activities), каждая из которых представляет собой отдельную часть функциональности приложения.
Выбор между одним или несколькими видами Activity сродни выбору чертежа дома: он оказывает существенное влияние на поток, сложность и масштабируемость приложения. Каждый подход имеет свои преимущества и недостатки, отвечает различным требованиям к приложениям и предпочтениям разработчиков. Как начинающие, так и опытные специалисты должны вдумчиво подходить к принятию решений, чтобы их приложения были не только надежными и эффективными, но и обеспечивали оптимальный пользовательский опыт.
В Android-разработке решение об использовании единой или множества Activity зависит от сложности и структуры приложения. У обоих подходов есть свои преимущества и варианты применения.
📌 Рассмотрим