🔐 Как сделать аутентификацию через отпечаток пальца или faceId? Изучаем AndroidX Biometric Library.
Возможно, вы неоднократно задавались вопросом, как реализовать вход в приложение через отпечаток пальца или faceId?
До Biometric Library, каждый реализовывал процесс входа по отпечатку пальца как мог. Какого-то стандартного способа не было, что приводило к большим неудобствам для разработчиков, учитывая высокую фрагментированность устройств на Android. К счастью, в Android 10 (API 29) была учтена обратная связь от разработчиков, и теперь появился единый интерфейс для использования биометрических датчиков (сканер отпечатка пальца и faceId) для аутентификации с помощью AndroidX Biometric Library API буквально в несколько строчек, при этом появился стандартный диалог, который избавит вас от ненужного кода и самостоятельного создания UI.
В этой статье мы поговорим как работать с AndroidX Biometric Library API и создадим небольшое приложение, которое предлагает пользователю пройти процесс аутентификации через отпечаток пальца.
Кроме того, напомню для тех, кто недавно присоединился к нам - на платформе androidschool.ru - много полезных современных туториалов, каждый снабжён кодом и примерами.
Возможно, вы неоднократно задавались вопросом, как реализовать вход в приложение через отпечаток пальца или faceId?
До Biometric Library, каждый реализовывал процесс входа по отпечатку пальца как мог. Какого-то стандартного способа не было, что приводило к большим неудобствам для разработчиков, учитывая высокую фрагментированность устройств на Android. К счастью, в Android 10 (API 29) была учтена обратная связь от разработчиков, и теперь появился единый интерфейс для использования биометрических датчиков (сканер отпечатка пальца и faceId) для аутентификации с помощью AndroidX Biometric Library API буквально в несколько строчек, при этом появился стандартный диалог, который избавит вас от ненужного кода и самостоятельного создания UI.
В этой статье мы поговорим как работать с AndroidX Biometric Library API и создадим небольшое приложение, которое предлагает пользователю пройти процесс аутентификации через отпечаток пальца.
Кроме того, напомню для тех, кто недавно присоединился к нам - на платформе androidschool.ru - много полезных современных туториалов, каждый снабжён кодом и примерами.
#jetpack #datastore
Jetpack DataStore - новый способ хранения данных
В этом мини-курсе вы познакомитесь с Jetpack Datastore – это новый и улучшенный способ хранения данных, призванный заменить SharedPreferences. DataStore предоставляет 2 имплементации: Proto DataStore, позволяющий хранить типизированные объекты typed objects (на базе protocol buffers) и Preferences DataStore, хранящий пары ключ-значение. Данные сохраняются асинхронно, консистентно и транзакционно, избавляя от недостатков подхода на SharedPreferences.
📌Вы узнаете:
- Что такое DataStore и почему стоит его использовать.
- Как добавить DataStore в ваш проект.
- Ключевые различия между Preferences и DataStore и плюсы/минусы использования
- Как использовать Preferences DataStore.
- Как мигрировать с SharedPreferences на новые Preferences DataStore.
📌Проект:
В качестве практического примера вы разработаете приложение-список дел, которое позволяет сортировать список созданных задач по приоритету или по дедлайну. Ссылка на мини-курс
По ссылке вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс
Канал AndroidSchool.ru
Jetpack DataStore - новый способ хранения данных
В этом мини-курсе вы познакомитесь с Jetpack Datastore – это новый и улучшенный способ хранения данных, призванный заменить SharedPreferences. DataStore предоставляет 2 имплементации: Proto DataStore, позволяющий хранить типизированные объекты typed objects (на базе protocol buffers) и Preferences DataStore, хранящий пары ключ-значение. Данные сохраняются асинхронно, консистентно и транзакционно, избавляя от недостатков подхода на SharedPreferences.
📌Вы узнаете:
- Что такое DataStore и почему стоит его использовать.
- Как добавить DataStore в ваш проект.
- Ключевые различия между Preferences и DataStore и плюсы/минусы использования
- Как использовать Preferences DataStore.
- Как мигрировать с SharedPreferences на новые Preferences DataStore.
📌Проект:
В качестве практического примера вы разработаете приложение-список дел, которое позволяет сортировать список созданных задач по приоритету или по дедлайну. Ссылка на мини-курс
По ссылке вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс
Канал AndroidSchool.ru
#новый_курс #viewmodel #livedata
Android LiveData и ViewModel
В этом курсе вы научитесь работать с компонентами, помогающими пережить жизненный цикл активити или фрагментов LiveData и ViewModel. Обычно, когда меняются данные, нужно обновить состояние и графического интерфейса, который отображал данные. Учитывая то, что Android-компоненты имеют свой жизненный цикл и могут быть недоступны на момент обновления интерфейса - до недавнего времени обработка таких ситуаций была настоящей головной болью для разработчиков. Однако теперь с помощью LiveData это стало проще простого. И в этом курсе мы разберёмся как это сделать.
Ключевые особенности курса:
📌 Научитесь работать с компонентами, помогающими пережить жизненный цикл активити или фрагментов
📌 Сможете применять LiveData для обновления UI
📌 Освоите работу с ViewModel
📌 Научитесь работать с Android Architecture Components
Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс
https://androidschool.ru/courses/livedata-start/
Задать вопрос или предложить идею для курса вы можете в чате https://news.1rj.ru/str/android_school_talk
Android LiveData и ViewModel
В этом курсе вы научитесь работать с компонентами, помогающими пережить жизненный цикл активити или фрагментов LiveData и ViewModel. Обычно, когда меняются данные, нужно обновить состояние и графического интерфейса, который отображал данные. Учитывая то, что Android-компоненты имеют свой жизненный цикл и могут быть недоступны на момент обновления интерфейса - до недавнего времени обработка таких ситуаций была настоящей головной болью для разработчиков. Однако теперь с помощью LiveData это стало проще простого. И в этом курсе мы разберёмся как это сделать.
Ключевые особенности курса:
📌 Научитесь работать с компонентами, помогающими пережить жизненный цикл активити или фрагментов
📌 Сможете применять LiveData для обновления UI
📌 Освоите работу с ViewModel
📌 Научитесь работать с Android Architecture Components
Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс
https://androidschool.ru/courses/livedata-start/
Задать вопрос или предложить идею для курса вы можете в чате https://news.1rj.ru/str/android_school_talk
Платформа AndroidSchool теперь обзавелась своим образовательным блогом на хабре! Первая статья о том, как создать сложный список за 20 минут! Сохраните себе, чтобы не забыть - точно пригодится! Комментарии и репосты приветствуются!
https://habr.com/ru/post/523768/
https://habr.com/ru/post/523768/
Хабр
Создание сложного списка элементов за 20 минут в Android на базе Groupie
Списки являются основным способом представления различного контента в мобильных приложениях. Будь то социальная сеть, приложение для чтения книг или интернет-маг...
#koin #внедрениезависимости #di #servicelocator
Koin. Основы внедрения зависимостей
🚀Арсенал современного Android-разработчика стремительно обновляется и, хотя Koin уже более 2-ух лет доступен для использования, очень много туториалов используют старые и неактуальные версии. Поэтому я решил посвятить новый туториал основам работы с Koin.
В Android-разработке для DI традиционно используют Dagger 2, очень мощный фреймворк с кодогенерацией. Но есть проблема: новичкам сложно его использовать. Сами принципы DI просты и понятны, но Dagger усложняет их. С появлением Kotlin появилась возможность писать удобные вещи, которые были бы практически невозможны с использованием Java. Одной из таких вещей стал Koin, имеющий очень лаконичный API, упрощающий написание и поддержку кода. Пройдя новый курс: "Koin. Основы внедрения зависимостей" вы поймёте разницу между Dependency Injection и Service Locator, а также научитесь работать с Koin.
Ключевые особенности курса:
📌 Поймёте разницу между паттернами Dependency Injection и Service Locator
📌 Научитесь работать с Koin и применять своих проектах
📌 Готовый проект с исходным кодом доступен на GitHub
Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс
📚Ссылка на курс
💬Чат канала
Koin. Основы внедрения зависимостей
🚀Арсенал современного Android-разработчика стремительно обновляется и, хотя Koin уже более 2-ух лет доступен для использования, очень много туториалов используют старые и неактуальные версии. Поэтому я решил посвятить новый туториал основам работы с Koin.
В Android-разработке для DI традиционно используют Dagger 2, очень мощный фреймворк с кодогенерацией. Но есть проблема: новичкам сложно его использовать. Сами принципы DI просты и понятны, но Dagger усложняет их. С появлением Kotlin появилась возможность писать удобные вещи, которые были бы практически невозможны с использованием Java. Одной из таких вещей стал Koin, имеющий очень лаконичный API, упрощающий написание и поддержку кода. Пройдя новый курс: "Koin. Основы внедрения зависимостей" вы поймёте разницу между Dependency Injection и Service Locator, а также научитесь работать с Koin.
Ключевые особенности курса:
📌 Поймёте разницу между паттернами Dependency Injection и Service Locator
📌 Научитесь работать с Koin и применять своих проектах
📌 Готовый проект с исходным кодом доступен на GitHub
Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс
📚Ссылка на курс
💬Чат канала
ANDROID SCHOOL.RU - Android на практике pinned Deleted message
Kotlin Android Extensions deprecated. Что делать? Инструкция по миграции
Возможно, вы уже слышали, что Kotlin Android Extensions — плагин для Kotlin теперь deprecated.
Безусловно, это было очень удобно, особенно если у вас проект полностью на Kotlin. Однако, мир меняется и теперь нужно искать альтернативы. Написал небольшую статью в блоге на medium по этому поводу. В статье мы кратко рассмотрим, что такое плагин Kotlin Android Extension, какие были проблемы с ним и что теперь нам, Android-разработчикам делать.
📚Читать полностью
Возможно, вы уже слышали, что Kotlin Android Extensions — плагин для Kotlin теперь deprecated.
Безусловно, это было очень удобно, особенно если у вас проект полностью на Kotlin. Однако, мир меняется и теперь нужно искать альтернативы. Написал небольшую статью в блоге на medium по этому поводу. В статье мы кратко рассмотрим, что такое плагин Kotlin Android Extension, какие были проблемы с ним и что теперь нам, Android-разработчикам делать.
📚Читать полностью
Medium
Kotlin Android Extensions deprecated. Что делать?Инструкция по миграции
Возможно, вы уже слышали, что Kotlin Android Extensions — плагин для Kotlin теперь deprecated.
#paging #flow #бесконечныйсписок
Реализуем бесконечный список на базе Android Paging Library 3.0
🚀Списки являются неотъемлемой частью любого мобильного приложения. У большинства списков нет фиксированного размера, поскольку информации слишком много для отображения сразу. Например, приложения соцсетей такие как Вконтакте, Instagram, Facebook. Вы можете бесконечно скролить вниз ленту новостей и никогда не дойдёте до конца - так как контента слишком много. Естественно, загружать сразу большой массив данных в мобильное приложение нельзя. Здесь есть множество причин: часто интернет в мобильных телефонах не такой быстрый как в WiFi, кроме того еще и платный. Очевидно, что данные нужно загружать порционно - такой паттерн называется paging (разбивка на страницы, подкачка страниц).
К счастью, Google анонсировал библиотеку, позволяющую реализовать процесс постраничной загрузки данных в Android c минимальными трудозатратами. Такой подход улучшит пользовательский опыт при работе с приложением - так как для пользователя список будет казаться бесконечным и получение новой порции данных будет незаметно.
Ключевые особенности курса:
📌 Рассмотрим Android Paging Library 3.0
📌 На примере рассмотрим работу с Kotlin Flow
📌 Научитесь реализовывать бесконечные списки с постраничной загрузкой
📌 Готовый проект с исходным кодом доступен на GitHub
Ну а я напоминаю, что у вас есть возможность присоединиться к практическому онлайн-интенсиву, где вы прокачаетесь в Android на практике за 12 занятий.
📚Ссылка на курс
💬Чат канала
🔥Онлайн-интенсив
Реализуем бесконечный список на базе Android Paging Library 3.0
🚀Списки являются неотъемлемой частью любого мобильного приложения. У большинства списков нет фиксированного размера, поскольку информации слишком много для отображения сразу. Например, приложения соцсетей такие как Вконтакте, Instagram, Facebook. Вы можете бесконечно скролить вниз ленту новостей и никогда не дойдёте до конца - так как контента слишком много. Естественно, загружать сразу большой массив данных в мобильное приложение нельзя. Здесь есть множество причин: часто интернет в мобильных телефонах не такой быстрый как в WiFi, кроме того еще и платный. Очевидно, что данные нужно загружать порционно - такой паттерн называется paging (разбивка на страницы, подкачка страниц).
К счастью, Google анонсировал библиотеку, позволяющую реализовать процесс постраничной загрузки данных в Android c минимальными трудозатратами. Такой подход улучшит пользовательский опыт при работе с приложением - так как для пользователя список будет казаться бесконечным и получение новой порции данных будет незаметно.
Ключевые особенности курса:
📌 Рассмотрим Android Paging Library 3.0
📌 На примере рассмотрим работу с Kotlin Flow
📌 Научитесь реализовывать бесконечные списки с постраничной загрузкой
📌 Готовый проект с исходным кодом доступен на GitHub
Ну а я напоминаю, что у вас есть возможность присоединиться к практическому онлайн-интенсиву, где вы прокачаетесь в Android на практике за 12 занятий.
📚Ссылка на курс
💬Чат канала
🔥Онлайн-интенсив
Поздравляю всех с наступающим 2021 годом!
Пусть в новом году исполнятся все заветные желания. Крутых проектов, здоровья, кучу путешествий, интересных людей вокруг💥
Этот год был достаточно результативным - было проведено несколько интенсивов, разработано с нуля с десяток туториалов и создан блог на хабре! В следующем году вас ждут новые практические интенсивы (в том числе и для новичков) и множество полезных туториалов по современной Android-разработке! А пока, желаю всем хорошо отдохнуть - чтобы ворваться в новое десятилетие и достичь поставленных целей!
Увидимся в следующем году!
Пусть в новом году исполнятся все заветные желания. Крутых проектов, здоровья, кучу путешествий, интересных людей вокруг💥
Этот год был достаточно результативным - было проведено несколько интенсивов, разработано с нуля с десяток туториалов и создан блог на хабре! В следующем году вас ждут новые практические интенсивы (в том числе и для новичков) и множество полезных туториалов по современной Android-разработке! А пока, желаю всем хорошо отдохнуть - чтобы ворваться в новое десятилетие и достичь поставленных целей!
Увидимся в следующем году!
#kotlin #приемы
Пишем чистый код на Kotlin. 8 простых, но эффективных приёмов
С каждым днем Kotlin набирает популярность в качестве языка программирования под Android. И уже даже те, кто был ярым адептом Java потихоньку тоже переходят на рекомендуемый Google язык разработки. Однако, на code review я часто замечаю, как разработчики, пересевшие на Kotlin, все еще пишут Java-подобный код, только используя синтаксис Kotlin.
Если вы хотите писать более чистый и лаконичный код на Kotlin, повысить свою эффективность и удивить коллег знанием языка, то прочитайте этот пост до конца — думаю найдете для себя много полезного. Читать
Пишем чистый код на Kotlin. 8 простых, но эффективных приёмов
С каждым днем Kotlin набирает популярность в качестве языка программирования под Android. И уже даже те, кто был ярым адептом Java потихоньку тоже переходят на рекомендуемый Google язык разработки. Однако, на code review я часто замечаю, как разработчики, пересевшие на Kotlin, все еще пишут Java-подобный код, только используя синтаксис Kotlin.
Если вы хотите писать более чистый и лаконичный код на Kotlin, повысить свою эффективность и удивить коллег знанием языка, то прочитайте этот пост до конца — думаю найдете для себя много полезного. Читать
Medium
Пишем чистый код на Kotlin. 8 простых, но эффективных приёмов
С каждым днем Kotlin набирает популярность в качестве языка программирования под Android. И уже даже те, кто был ярым адептом Java…
#паттерны #kotlin #builder
👷Эволюция паттерна Builder в Android.
Продолжаем тему паттернов проектирования. На этот раз рассмотрим порождающий шаблон проектирования Builder. Мы рассмотрим какую проблему решает Builder в Java, какие у него есть “братья” и как этот паттерн эволюционировал в Android-разработке при использовании Kotlin. Рассмотрим антипаттерны "Телескопический конструктор" и JavaBeans, а затем поговорим как реализовать паттерн Builder в Kotlin
Эволюция паттерна Builder в Android. Читать
👷Эволюция паттерна Builder в Android.
Продолжаем тему паттернов проектирования. На этот раз рассмотрим порождающий шаблон проектирования Builder. Мы рассмотрим какую проблему решает Builder в Java, какие у него есть “братья” и как этот паттерн эволюционировал в Android-разработке при использовании Kotlin. Рассмотрим антипаттерны "Телескопический конструктор" и JavaBeans, а затем поговорим как реализовать паттерн Builder в Kotlin
Эволюция паттерна Builder в Android. Читать
Medium
Эволюция паттерна Builder в Android.
Продолжаем тему паттернов проектирования. На этот раз рассмотрим порождающий шаблон проектирования Builder. Мы рассмотрим какую проблему…
#room #миграции
Как написать миграцию базы данных для Room?
Миграции базы данных порой пугают начинающих разработчиков и вместо правильной обработки смены версии БД, многие выбирают просто удаление старой базы данных вместе с данными.
Такой способ не подойдет для приложений, которые хранят данные, потому что в этом случае при обновлении приложения - все данные удалятся.
Поэтому в этой статье мы рассмотрим миграции версий базы данных на примере использования Room и научимся тестировать корректность миграций.
А совсем скоро выйдет туториал, в котором мы пошагово научимся тестировать приложение на базе MVVM и такие компоненты как LiveData, ViewModel и Room Dao
http://androidschool.ru/2020/03/24/room-migrations/
Как написать миграцию базы данных для Room?
Миграции базы данных порой пугают начинающих разработчиков и вместо правильной обработки смены версии БД, многие выбирают просто удаление старой базы данных вместе с данными.
Такой способ не подойдет для приложений, которые хранят данные, потому что в этом случае при обновлении приложения - все данные удалятся.
Поэтому в этой статье мы рассмотрим миграции версий базы данных на примере использования Room и научимся тестировать корректность миграций.
А совсем скоро выйдет туториал, в котором мы пошагово научимся тестировать приложение на базе MVVM и такие компоненты как LiveData, ViewModel и Room Dao
http://androidschool.ru/2020/03/24/room-migrations/
#кэширование #LRU
Кэширование в Android-приложениях
Отдельная тема при проектировании и разработке Android-приложений является организация схемы кэширования данных.
Все мы не любим ждать и тратить дорогой трафик (особенно в роуминге) - так что сохранение данных - это то, что повысит UX вашего приложения и сэкономит деньги вашим пользователям.
Но как релизовать кэширование данных? Чем руководствоваться при выборе предпочтительной стратегии кэширования для вашего проекта?
В приведённом докладе разработчик из FunCorp поделится опытом своей команды в реализации по-настоящему быстрого и гибкого кэша на примере social media-приложения с многомиллионной аудиторией. Из доклада вы узнаете про различные стратегии, такие как Synchronized cache, Write-through cache, LRU cache.
Ссылка на доклад
А конкретные релизации стратегий кэширования c примерами кода (например Offline-first, Remote-first на базе Room) мы рассмотрим на ближайшем интенсиве продвинутой Android-разработки
Если вы имеете базовые навыки - но хотите качественно повысить свой уровень разработки - записывайтесь.
Ознакомиться с программой интенсива
Кэширование в Android-приложениях
Отдельная тема при проектировании и разработке Android-приложений является организация схемы кэширования данных.
Все мы не любим ждать и тратить дорогой трафик (особенно в роуминге) - так что сохранение данных - это то, что повысит UX вашего приложения и сэкономит деньги вашим пользователям.
Но как релизовать кэширование данных? Чем руководствоваться при выборе предпочтительной стратегии кэширования для вашего проекта?
В приведённом докладе разработчик из FunCorp поделится опытом своей команды в реализации по-настоящему быстрого и гибкого кэша на примере social media-приложения с многомиллионной аудиторией. Из доклада вы узнаете про различные стратегии, такие как Synchronized cache, Write-through cache, LRU cache.
Ссылка на доклад
А конкретные релизации стратегий кэширования c примерами кода (например Offline-first, Remote-first на базе Room) мы рассмотрим на ближайшем интенсиве продвинутой Android-разработки
Если вы имеете базовые навыки - но хотите качественно повысить свой уровень разработки - записывайтесь.
Ознакомиться с программой интенсива
#профилирование #ui #производительность #recyclerview
Как поправить тормозящий скролл в приложении?
Одной из целей этого блога и канала - сделать так, чтобы хороших разработчиков, а следовательно и удобных, полезных приложений - было больше. Поэтому ловите полезный материал - который буквально завтра поможет вам улучшить ваше приложение.
Кроме стандартных вопросов на собеседованиях, я предпочитаю задавать вопросы из практики. Буквально взять задачу, которую нужно будет реализовать и спросить, как будущий разработчик с ней справится.
Это может быть сложная кастомная view, стратегия кэширования или оптимизации UI. В данном случае, например тормозящий список.
Прежде, чем перейти дальше к посту, подумайте 5 минут и составьте план - как бы вы пытались устранить такую проблему?
Подумали? А теперь, если вам интересно, то можете посмотреть старый - но не теряющий своей актуальности доклад о том, какие есть способы профилирования тормозящего UI, какие есть инструменты для проверки и как использовать HierarchyViewer, Systrace, Android Studio CPU Monitor, Memory Monitor и другие классные инструменты. Чем плох overdraw и почему 9-patch это круто.
Смотрел этот доклад ещё в далеком 2016-ом и периодически задаю похожий вопрос на собеседовании - процентов 10% только могут обозначить примерные векторы куда смотреть, так посмотрите доклад и поправьте уже тормозящий скролл в вашем приложении 😉
Как поправить тормозящий скролл в приложении?
Одной из целей этого блога и канала - сделать так, чтобы хороших разработчиков, а следовательно и удобных, полезных приложений - было больше. Поэтому ловите полезный материал - который буквально завтра поможет вам улучшить ваше приложение.
Кроме стандартных вопросов на собеседованиях, я предпочитаю задавать вопросы из практики. Буквально взять задачу, которую нужно будет реализовать и спросить, как будущий разработчик с ней справится.
Это может быть сложная кастомная view, стратегия кэширования или оптимизации UI. В данном случае, например тормозящий список.
Прежде, чем перейти дальше к посту, подумайте 5 минут и составьте план - как бы вы пытались устранить такую проблему?
Подумали? А теперь, если вам интересно, то можете посмотреть старый - но не теряющий своей актуальности доклад о том, какие есть способы профилирования тормозящего UI, какие есть инструменты для проверки и как использовать HierarchyViewer, Systrace, Android Studio CPU Monitor, Memory Monitor и другие классные инструменты. Чем плох overdraw и почему 9-patch это круто.
Смотрел этот доклад ещё в далеком 2016-ом и периодически задаю похожий вопрос на собеседовании - процентов 10% только могут обозначить примерные векторы куда смотреть, так посмотрите доклад и поправьте уже тормозящий скролл в вашем приложении 😉
#новыйкурс #тестирование #room #viewmodel
Тестирование LiveData, ViewModel и Room
🚀Архитектурные компоненты Android (Android Architecture Components, AAC) – уже давно стали частью большинства приложений. Они помогают создавать надежные, тестируемые и масштабируемые Android-приложения. В большинстве проектов от Android разработчика требуется не только использовать AAC, но и умение покрывать ваш код тестами и использовать при этом различные инструменты. В данном туториале вы сможете освоить основы написания Unit-тестов, покрывающих работу Android Architecture Components.
В этом мини-курсе вы научитесь тестировать Android Architecture Components, а именно: ViewModel, LiveData, Room. Кроме этого мы рассмотрим процесс создания кастомных правил для переиспользования логики. В качестве демонстрационного приложения вы разработаете приложение для составления списка ежедневных задач. Для прохождения этого мини-курса желательно, чтобы вы имели представление о работе с ViewModel.
В результате прохождения курса вы:
📌Освоите базовые аннотации JUnit
📌Научитесь тестировать ViewModel и LiveData
📌Научитесь тестировать Data Access Objects в Room
📌Создадите собственные кастомные правила для переиспользования логики между тестами.
Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и примеры кода. Не забудьте оставить обратную связь и оценить курс.
📚Ссылка на курс
Тестирование LiveData, ViewModel и Room
🚀Архитектурные компоненты Android (Android Architecture Components, AAC) – уже давно стали частью большинства приложений. Они помогают создавать надежные, тестируемые и масштабируемые Android-приложения. В большинстве проектов от Android разработчика требуется не только использовать AAC, но и умение покрывать ваш код тестами и использовать при этом различные инструменты. В данном туториале вы сможете освоить основы написания Unit-тестов, покрывающих работу Android Architecture Components.
В этом мини-курсе вы научитесь тестировать Android Architecture Components, а именно: ViewModel, LiveData, Room. Кроме этого мы рассмотрим процесс создания кастомных правил для переиспользования логики. В качестве демонстрационного приложения вы разработаете приложение для составления списка ежедневных задач. Для прохождения этого мини-курса желательно, чтобы вы имели представление о работе с ViewModel.
В результате прохождения курса вы:
📌Освоите базовые аннотации JUnit
📌Научитесь тестировать ViewModel и LiveData
📌Научитесь тестировать Data Access Objects в Room
📌Создадите собственные кастомные правила для переиспользования логики между тестами.
Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и примеры кода. Не забудьте оставить обратную связь и оценить курс.
📚Ссылка на курс
#mockwebserver #espresso #новыйкурс
Использование MockWebServer при разработке и тестировании Android-приложений
📌 Очень часто бывает так, что нужно замокать какие-то данные от сервера и проверить, как приложение поведёт себя в случае пустого ответа или ошибки от сервера. Уверен, что такой кейс был у каждого. MockWebServer - простая и удобная библиотека от Square, которая позволит вам легко и просто создать фиктивный веб-сервер и не зависеть от реального. Это упрощает тестирование различных сценариев без доступа к Интернету и без необходимости вносить изменения в удаленный сервер. Для проверки того, как реагирует приложение на ошибки сервера мы напишем UI-тесты на Espresso.
В этом мини-курсе вы узнаете:
✅ Преимущества использования фиктивного сервера при тестировании.
✅ Как настроить MockWebServer.
✅ Как заставить MockWebServer имитировать поведение вашего реального сервера.
✅ Как писать UI-тесты, чтобы убедиться, что ваше приложение работает должным образом.
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом.
📚 Ссылка на курс
@android_school_ru
Использование MockWebServer при разработке и тестировании Android-приложений
📌 Очень часто бывает так, что нужно замокать какие-то данные от сервера и проверить, как приложение поведёт себя в случае пустого ответа или ошибки от сервера. Уверен, что такой кейс был у каждого. MockWebServer - простая и удобная библиотека от Square, которая позволит вам легко и просто создать фиктивный веб-сервер и не зависеть от реального. Это упрощает тестирование различных сценариев без доступа к Интернету и без необходимости вносить изменения в удаленный сервер. Для проверки того, как реагирует приложение на ошибки сервера мы напишем UI-тесты на Espresso.
В этом мини-курсе вы узнаете:
✅ Преимущества использования фиктивного сервера при тестировании.
✅ Как настроить MockWebServer.
✅ Как заставить MockWebServer имитировать поведение вашего реального сервера.
✅ Как писать UI-тесты, чтобы убедиться, что ваше приложение работает должным образом.
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом.
📚 Ссылка на курс
@android_school_ru
#rxjava #собеседование #article
8 Каверзных вопросов по RxJava
Несмотря на то, что Kotlin Coroutines и Flow потихоньку перетягивают одеяло, всё-таки на многих больших проектах всё также используется RxJava. Если у вас сложное приложение, то задачи выходят за рамки обычного сценария: сходить в сеть и отобразить данные. И тут в дело вступают различные операторы RxJava — как раз то, почему Rx ещё долго не будет заменена на мой взгляд. В данной статье приведены вопросы от простого к сложному, которые могут ввести в ступор даже продвинутых пользователей RxJava
Читать подробнее
@android_school_ru
8 Каверзных вопросов по RxJava
Несмотря на то, что Kotlin Coroutines и Flow потихоньку перетягивают одеяло, всё-таки на многих больших проектах всё также используется RxJava. Если у вас сложное приложение, то задачи выходят за рамки обычного сценария: сходить в сеть и отобразить данные. И тут в дело вступают различные операторы RxJava — как раз то, почему Rx ещё долго не будет заменена на мой взгляд. В данной статье приведены вопросы от простого к сложному, которые могут ввести в ступор даже продвинутых пользователей RxJava
Читать подробнее
@android_school_ru
#room #автомиграции
Если миграции базы данных для вас были тёмным лесом и вместо правильной обработки смены версии БД, вы выбирали просто удаление старой базы данных вместе с данными, то спешу вас обрадовать: в Room появились автомиграции!
С версии 2.4.0-alpha01 появилась возможность использования автомиграций.
Это подойдёт для простых случаев, когда нужно:
📌 добавить новый столбец
📌 обновить первичный ключ, внешний ключ или индекс
📌 изменить значения по умолчанию и т.д.
Под капотом генерируется простой класс с SQL-скриптом обновления таблицы, так что теперь можно вручную это не писать.
В более сложных случаях, все также нужно будет описывать процесс самостоятельно. Если вы впервые слышите о миграциях - то я как-то написал целую статью с примерами.
А здесь можно подробнее почитать про автомиграции
@android_school_ru
Если миграции базы данных для вас были тёмным лесом и вместо правильной обработки смены версии БД, вы выбирали просто удаление старой базы данных вместе с данными, то спешу вас обрадовать: в Room появились автомиграции!
С версии 2.4.0-alpha01 появилась возможность использования автомиграций.
Это подойдёт для простых случаев, когда нужно:
📌 добавить новый столбец
📌 обновить первичный ключ, внешний ключ или индекс
📌 изменить значения по умолчанию и т.д.
Под капотом генерируется простой класс с SQL-скриптом обновления таблицы, так что теперь можно вручную это не писать.
В более сложных случаях, все также нужно будет описывать процесс самостоятельно. Если вы впервые слышите о миграциях - то я как-то написал целую статью с примерами.
А здесь можно подробнее почитать про автомиграции
@android_school_ru
Android Developers
Номер | Jetpack | Android Developers
❤1
У меня часто спрашивают, как подготовиться к собеседованию. Мой ответ краткий: практика, очень много практики. Но конечно, чтобы понимать векторы для изучения можно и нужно смотреть вопросы и искать на них ответы. Примером такого списка может быть вот этот репозиторий с вопросами. Обратите внимание на блок с многопоточностью-по моему опыту он самый сложный и его активно задают на собеседованиях. https://github.com/enhorse/java-interview
GitHub
GitHub - enhorse/java-interview: Вопросы и ответы к интервью Java разработчика
Вопросы и ответы к интервью Java разработчика. Contribute to enhorse/java-interview development by creating an account on GitHub.
#appsearch #fulltextsearch #sqlite
App Search Library для локального full-text поиска документов в Android-приложениях.
📌Совсем недавно Google анонсировал библиотеку для локального поиска документов AppSearch. Библиотека пока находится на стадии alpha-версии, но тем не менее уже можно применить её и рассмотреть ряд возможностей. В этом туториале мы разработаем небольшое приложение для локального поиска разного рода документов и отобразим их пользователю для демонстрации работы AppSearch. Кроме этого кратко поговорим про ListenableFuture и ExecutorService, так как поддержки RX или Kotlin Coroutines пока нет и приходится работать с ListenableFuture.
📚Ссылка на туториал
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом.
Кроме того, опубликовал краткий обзор на хабре
📌Обзор AppSearch на хабре
App Search Library для локального full-text поиска документов в Android-приложениях.
📌Совсем недавно Google анонсировал библиотеку для локального поиска документов AppSearch. Библиотека пока находится на стадии alpha-версии, но тем не менее уже можно применить её и рассмотреть ряд возможностей. В этом туториале мы разработаем небольшое приложение для локального поиска разного рода документов и отобразим их пользователю для демонстрации работы AppSearch. Кроме этого кратко поговорим про ListenableFuture и ExecutorService, так как поддержки RX или Kotlin Coroutines пока нет и приходится работать с ListenableFuture.
📚Ссылка на туториал
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом.
Кроме того, опубликовал краткий обзор на хабре
📌Обзор AppSearch на хабре
#flow #room #coroutines
Kotlin Flow + Room на примере создания todo-списка
📌Новый туториал будет интересен тем, кто хотел на практике освоить Kotlin Flow и Kotlin Coroutines в связке с хранением данных через Room. В этом туториале мы разработаем небольшое приложение для создания списка дел. Помимо сохранения данных, используя Room, вы научитесь работать с Kotlin Flow для получения данных. В результате прохождения мини-курса вы разработаете собственное приложение, позволяющее сохранять список дел.
📚Ссылка на туториал
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом.
Kotlin Flow + Room на примере создания todo-списка
📌Новый туториал будет интересен тем, кто хотел на практике освоить Kotlin Flow и Kotlin Coroutines в связке с хранением данных через Room. В этом туториале мы разработаем небольшое приложение для создания списка дел. Помимо сохранения данных, используя Room, вы научитесь работать с Kotlin Flow для получения данных. В результате прохождения мини-курса вы разработаете собственное приложение, позволяющее сохранять список дел.
📚Ссылка на туториал
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом.