Android Mobile | YeaHub
487 subscribers
285 photos
21 videos
471 links
Теория, подготовка к интервью и курсы для Android разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
👍 Jackson Module Kotlin — решение для удобной работы Jackson с Kotlin-классами. Раньше для десериализации JSON в Kotlin-классы требовался конструктор по умолчанию, но этот модуль устраняет это ограничение. Он автоматически поддерживает классы с одним конструктором, а также позволяет работать с фабричными методами и вторичными конструкторами.

Модуль интегрируется с ObjectMapper и сохраняет информацию о типах Kotlin, включая generics. Особенно удобен для data-классов, sealed-классов и встроенных Kotlin-типов вроде Pair или Range. Поддержка Android и конфигурация через Gradle/Maven делают его универсальным инструментом.
GitHub

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #android
🤔 Сколько времени может работать фоновый Service?

Начиная с Android 8.0, обычный фоновой сервис может работать только несколько секунд после ухода приложения в фон, иначе система убьёт его. Для долгой фоновой работы нужно использовать Foreground Service с уведомлением, тогда он работает бесконечно, пока пользователь его не остановит, но за ним следят ограничения по энергопотреблению.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
🥄 Calendar — гибкая библиотека Kotlin для создания и работы с календарями

Calendar — это гибко настраиваемая библиотека календаря для Android, опирающаяся на RecyclerView для просмотра и LazyRow/LazyColumn для создания календаря.

🟠 GitHub
🟠 Пример кода готового календаря
🟠 Скачать демо-apk

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#полезное
🤯 Kotlin-Result — функциональный подход к обработке ошибок. Библиотека предлагает монаду Result для Kotlin, вдохновлённую решениями из Rust и Haskell. Позволяет явно разделять успешный результат (Ok) и ошибку (Err), избегая исключений и null-значений.

Проект имеет zero-overhead реализацию через inline-классы и поддержку корутин. Подходит для проектов, где важна предсказуемость и читаемость кода обработки ошибок.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#полезное
😱 Создание кастомного тултипа Jetpack Compose

Пошаговый гайд по созданию гибкой и удобной системы тултипов в Jetpack Compose, с помощью модифайеров и специального оборачивающего блока.
Читать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
#Собес #android
🤔 Как работают методы bind и unbind y Android-сервисов?

bindService(Intent, ServiceConnection, flags) свЯЗЫВает клиент (Activity или другой компонент) с сервисом, вызывая в сервисе onBind (Intent) и вОЗВраЩая IBinder для взаимодействия. unbindService(ServiceConnection) разрывает связь, и если нет других клиентов и сервис не был запущен через startService, он завершается.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🤓 Kvaesitso — Android лаунчер на Kotlin, с упором на поисковые возможности

Kvaesitso — это open-source Android лаунчер с акцентом на возможности поиска
Можно взять Kvaesitso за основу и использовать в своих проектах, благо лицензия GPL-3.0

GitHub
Доки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
😊 kobweb — современный фреймворк для full stack веб-приложений на Kotlin

Kobweb — это фреймворк Kotlin, построенный на основе Compose HTML.
Kobweb включает в себя все необходимое для создания динамичных веб-сайтов, а также веб-приложений, используя при этом всю экосистему Kotlin.

GitHub
Доки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
#полезное
😇 KVision — ООП веб-фреймворк для Kotlin

KVision позволяет создавать современные веб-приложения на Kotlin без использования HTML, CSS и JavaScript. KVision предоставляет большую коллекцию готовых к использованию компонентов GUI, которые можно использовать в качестве блоков для построения пользовательского интерфейса приложения.

KVision полностью поддерживает как реактивные, так и императивные стили программирования. KVision содержит инновационный интерфейс для подключения фреймворков Ktor, Jooby, Spring Boot, Javalin, Vert.x и Micronaut на стороне сервера, что позволяет создавать fullstack-приложения с общим кодом для модели данных и бизнес-логики. KVision активно развивается.

GitHub
Доки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2👍1🥰1
#Собес #android
🤔 При повороте экрана нужно сохранить и изменить определённые данные в Presenter без ViewModel. На каком этапе жизненного цикла и как это сделать?

При повороте экрана Activity уничтожается и создаётся заново. В MVP можно сохранить данные в onSaveInstanceState(Bundle) Presenter-a через Bundle (через интерфейс Activity → Presenter) и восстановить в onCreate нового View, передав сохранившийся Bundle . Либо хранить Presenter с данными в setRetainInstance(true) y Fragment.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😵‍💫 Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping

Ещё про Compose. Интересная статья, в которой автор рассказывает, как лямбды и strong skipping режим влияют на работу компилятора и на рекомпозицию.

Выводы и рекомендации от автора

🟠Compose стал более агрессивно оптимизировать пропуск Composable функций, когда параметры не изменились.

🟠Акцент в отдладке Compose сдвигается от метрик и отчетов к отладке на основе LayoutInspector и других инструментов, потому что метрики и отчеты говорят слишком мало о реальной производительности компонентов.

🟠Чтобы обновить UI, используя нестабильные аргументы, нужно создать новый инстанс такого аргумента в памяти, и метод copy дата-классов для этого отлично подходит.

🟠При работе с коллекциями для оптимизации рекомпозиций больше не нужно использовать Immutable Collections, однако придется обновлять их с созданием нового инстанса. Альтернатива использовать - SnapshotStateList.

🟠При работе с лямбдами для максимальной производительности нужно захватывать только те объекты, которые действительно нужны: если нужно только одно поле класса, лучше прочитать поле в отдельную переменную и сослаться на нее.

Код экспериментов из статьи → ComposeStability
Читать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
⌨️ Middle Android разработчик в компанию ОТП Банк

Техническое собеседование. Лето 2024

Вопросы:
- Как бы вы реализовали чат в Android?
- Что произойдёт, если запрашивать атрибут PrimaryColor из ApplicationContext и из ActivityContext?
- За что отвечают колбэки onStart, onStop, onPause, onResume?
- Как обновить только один TextView в списке без полного ребинда всего элемента?

Все вопросы можно посмотреть на нашей платформе

#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
#Собес #android
🤔 Есть четыре ViewModel, и нужно каждые 5 секунд подписываться на запрос из сети. Как это лучше организовать?

Лучше запускать единственный Flow ИЛИ LiveData в ОДНОм ViewModel, который внутри viewModelScope С помощью flow {} и delay(5000) эмитит результат каждые пять секунд. Остальные три ViewModel могут делегировать подписку на общий источник данных (SharedFlow или отдельный синглтон-репозиторий), чтобы не создавать дубли НТ ТР-запросов и экономить ресурсы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
#полезное
📞 Anvil — плагин для компилятора Kotlin, облегчающий внедрение зависимостей с помощью Dagger 2

Anvil упрощает внедрение зависимостей в Dagger за счет автоматического объединения модулей Dagger и интерфейсов компонентов. В общем, вместо того чтобы вручную добавлять модули в компонент Dagger и заставлять компонент Dagger расширять все интерфейсы компонента, эти модули и интерфейсы могут быть включены в компонент автоматически, типо того:

@Module
@ContributesTo(AppScope::class)
class DaggerModule { .. }

@ContributesTo(AppScope::class)
interface ComponentInterface {
fun getSomething(): Something
fun injectActivity(activity: MyActivity)
}

// The real Dagger component.
@MergeComponent(AppScope::class)
interface AppComponent

Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
❤️‍🔥 Vico — создание диаграмм и графиков на Kotlin

dependencies {
implementation(libs.vico.compose)
implementation(libs.vico.compose.m2)
implementation(libs.vico.compose.m3)
implementation(libs.vico.core)
implementation(libs.vico.views)
}


Vico — это легкая расширяемая библиотека Kotlin для создания диаграмм.
Библиотека совместима как с Jetpack Compose, так и с системой представлений, при этом 2 её основных модуля — compose и views, — являются независимыми.

GitHub
Wiki

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1