Жизненный цикл composable функции начинается с вызова и создания UI, затем проходит через стадии "recomposition" (обновления при изменении состояния) и завершения (удаление из дерева). Compose управляет этим процессом автоматически, основываясь на состоянии и действиях пользователя.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Anonymous Quiz
53%
Использование `WeakReference`
13%
Применение кастомных аллокаторов
27%
Реализация через `ManualMemoryControl`
7%
Использование аннотации `@Unmanaged`
💊1
Anonymous Quiz
12%
Уменьшает количество создаваемых объектов
29%
Позволяет избежать накладных расходов на вызовы функций
5%
Увеличивает размер скомпилированного кода
54%
Все вышеперечисленные
💊5
Композиция создаётся внутри функции setContent, которая задает точку входа для composable функций в Activity или Fragment. Она инициирует рендеринг интерфейса и управление состоянием.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Anonymous Quiz
7%
Когда объект содержит изменяемые составляющие
16%
Когда необходимо полностью изолировать копии объектов
21%
Когда класс данных имеет ссылочные типы данных в полях
56%
Во всех вышеперечисленных случаях
Anonymous Quiz
74%
Использование Gradle version catalog
9%
Применение Maven BOMs
6%
Использование строгой версификации
11%
Реализация через `@Version` аннотацию
Compose использует механизм "recomposition", который отслеживает изменения состояния. Если состояние изменилось, перерабатывается только та часть интерфейса, которая связана с изменёнными данными, минимизируя затраты на перерисовку.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Anonymous Quiz
14%
Строгая типизация возможных состояний или событий
12%
Возможность использовать `when` без `else` блока
3%
Компилятор проверяет исчерпывающесть обработки случаев
71%
Все вышеперечисленные
👍1💊1
Anonymous Quiz
89%
Используя ключевое слово `vararg` перед типом параметра
6%
Применяя список `List` в качестве параметра
3%
Объявляя параметр как массив
3%
Применяя специальный синтаксис `params`
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Anonymous Quiz
42%
Используя функции `toList()` и `toMutableList()`
3%
Объявляя все коллекции как `val`
51%
Применяя интерфейсы `List` и `MutableList`
4%
Закрывая доступ к методам изменения через аннотации
💊6🔥1
Anonymous Quiz
14%
Использование паттерна "Стратегия"
70%
Применение наследования или абстрактных классов
4%
Размещение кода в статических методах
12%
Внедрение зависимостей через конструкторы
💊2
Это аннотация в Compose, которая указывает, что объект стабилен и его свойства не изменяются спонтанно. Это помогает Compose эффективно определять, когда нужно перерисовывать UI, уменьшая количество лишних перерисовок.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Anonymous Quiz
58%
Используя `try-catch` блоки внутри корутин
9%
Применяя паттерн "Обсервер" для перехвата ошибок
8%
Используя монады и функции `map` и `flatMap`
25%
Реализуя пользовательские обработчики через `handleError`
💊1
Anonymous Quiz
8%
Используя ключевое слово `weak`
55%
Применяя `WeakReference` для объекта
25%
Устанавливая все ссылки на объект в `null`
13%
Реализуя `finalize` метод
💊6
Это функции, которые создают новую корутину и управляют ее выполнением.
Основные виды:
- launch {} – запускает корутину без возврата результата.
- async {} – возвращает Deferred<T> (фьючерс), который можно await().
- runBlocking {} – блокирует поток, пока корутина не выполнится.
- withContext {} – переключает контекст выполнения, но не создает новую корутину.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Anonymous Quiz
17%
Используя атомарные переменные для контроля вызовов
53%
Применяя делегат `lazy` с параметром `SYNCHRONIZED`
16%
Реализуя блокировку на уровне функции
14%
Используя `volatile` переменные для хранения состояния вызова
💊1
Anonymous Quiz
80%
Обертывание кода в блок `try-catch`
17%
Применение функции `runCatching`
2%
Использование специальных аннотаций для обработки исключений
1%
Применение модификатора `safe` перед блоком кода
💊20🤔1🤯1👀1
Это управляющий объект корутины.
Помимо отмены (cancel()), через Job можно:
1. Отслеживать завершение (join()) – приостанавливает выполнение, пока корутина не завершится.
2. Проверять статус (isActive, isCompleted, isCancelled) – можно динамически реагировать.
3. Создавать иерархию задач – дочерние корутины зависят от родительского Job.
4. Объединять с Timeout – можно ограничивать выполнение (withTimeout, withTimeoutOrNull).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Anonymous Quiz
46%
Объявляя функцию, которая возвращает другую функцию
38%
Использование лямбда-выражений внутри функции
7%
Применение функционального интерфейса
9%
Использование ключевых слов `fun` и `return`
💊10🤔3