Pull to refresh
4
0
Send message

А это можно запустить в фоне?

Level of difficultyEasy
Reading time12 min
Views4.1K

В мае 2023 г. команда ГК Юзтех организовала в Томске Usetech Meetup «Тренды мобильной разработки», где своим опытом поделились эксперты российского ИТ-рынка. По итогам мероприятия мы написали серию статей, каждая из которых транслирует выступление одного из спикеров. Начали с выступления Mobile Developer Алексея Гладкова на тему: «The State of Kotlin Multiplatform». Продолжим выступлением Кирилла Розова.

Коллеги, приветствую! Меня зовут Кирилл Розов, я руководитель группы Android разработки в Тинькофф, а также автор YouTube-канала «Android Broadcast».

В Android все больше ограничений на запуск и выполнение задач, когда приложения находятся в фоне. Сегодня я расскажу о разных рецептах и правилах, как уживаться (а не сражаться!) с системой и выполнять работу в фоне. Мы поговорим про WorkManager / JobScheduler, DownloadManager, Foreground Servise, Sync Adapter, AlarmManager, о вендорах, а также о том, как выбрать API для задачи. 

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments0

Авторизация с помощью клиентских SSL сертификатов в IOS и Android

Reading time8 min
Views37K
Протокол безопасной передачи данных SSL (Secure Sockets Layer) помимо обеспечения безопасной передачи данных так же позволяет реализовать авторизацию клиентов при помощи клиентских SSL сертификатов. Данная статья является практическим руководством по реализации данного вида авторизации в мобильных приложениях на IOS и Android.

Процесс организации работы сервера обеспечивающего такой вид авторизации в статье не рассматривается, однако в конце приведены ссылки по данной тематике.

Процесс авторизации выглядит следующим образом. При переходе клиента в закрытую область сервер запрашивает у клиента сертификат, если проверка прошла успешно то клиент получает доступ к закрытому контенту в ином случае клиент может получить ошибку “No required SSL certificate was sent”.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments8

Android: динамически подгружаем фрагменты из сети

Reading time5 min
Views15K
В этой статье мы рассмотрим, как загружать классы (в том числе, фрагменты) из сети во время выполнения программы, и использовать их в своем Android-приложении. Область применения подобной технологии на практике — это отдельная тема для разговора, мне же сама по себе реализация данной функциональности показалась довольно интересной задачей.

Приступим.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments19

Разбираемся с launchMode Android Activity: standard, singleTop, singleTask и singleInstance

Reading time8 min
Views48K
Перевод статьи подготовлен специально для студентов продвинутого курса по Android разработке.




Activity — это одна из самых ярких концепций в Android (самой популярной мобильной операционной системе с хорошо продуманной архитектурой управления памятью, которая отлично реализует многозадачность).

Так или иначе, с запуском Activity на экран не все так однозначно. Способ, которым оно было запущено, также важен. Нюансов в этой теме очень много. Одним из действительно важных является launchMode, о котором мы и поговорим в этой статье.

Каждое Activity создается для работы с разными целями. Некоторые из них предназначены для работы отдельно с каждым Intent, например, отправленным Activity для составления электронной почты в почтовом клиенте. В то время как другие предназначены для работы в качестве синглтона, например, Activity почтового ящика.

Вот почему важно указывать, нужно ли создавать новое Activity или использовать существующее, иначе это может привести к плохому UX или сбоям. Благодаря разработчикам ядра Android, это легко сделать с помощью launchMode, который был специально для этого разработан.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments6

Leaflet. Дружим Image с Canvas

Reading time4 min
Views10K
Leaflet Map

Доброго времени суток, дорогие хабрахабровцы!

Leaflet — библиотека, позволяющая добавить интерактивные карты на Ваш сайт и легко их кастомизировать. Сегодня рассмотрим то, как можно разместить изображения на Canvas-слое карт, совместно с базовыми маркерами.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments1

Современная MVI-архитектура на базе Kotlin

Reading time8 min
Views54K


За последние два года Android-разработчики в Badoo прошли длинный тернистый путь от MVP к совершенно иному подходу к архитектуре приложений. Мы с ANublo хотим поделиться переводом статьи нашего коллеги Zsolt Kocsi, описывающую проблемы, с которыми мы столкнулись, и их решение.

Это первая из нескольких статей, посвящённых разработке современной MVI-архитектуры на Kotlin.
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments12

Анимации c помощью Transitions API

Reading time11 min
Views70K
Привет!

На хабре ещё не была освещена тема Transitions API для анимаций, которые появились в Android начиная с 4.4 (KitKat) и продолжили свое развитие в 5.0 (Lollipop). В своей статье я расскажу о том, как упростить работу с анимациями с их использованием и как применять их на любом устройстве с версией Android 4.0 и выше.


Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments20

Архитектурный шаблон MVI в Kotlin Multiplatform, часть 1

Reading time9 min
Views14K


Около года назад я заинтересовался новой технологией Kotlin Multiplatform. Она позволяет писать общий код и компилировать его под разные платформы, имея при этом доступ к их API. С тех пор я активно экспериментирую в этой области и продвигаю этот инструмент в нашей компании. Одним из результатов, например, является наша библиотека Reaktive — Reactive Extensions для Kotlin Multiplatform.

В приложениях Badoo и Bumble для разработки под Android мы используем архитектурный шаблон MVI (подробнее о нашей архитектуре читайте в статье Zsolt Kocsi: «Современная MVI-архитектура на базе Kotlin»). Работая над различными проектами, я стал большим поклонником этого подхода. Конечно, я не мог упустить возможность попробовать MVI и в Kotlin Multiplatform. Тем более случай был подходящий: нам нужно было написать примеры для библиотеки Reaktive. После этих моих экспериментов я был вдохновлён MVI ещё больше.

Я всегда обращаю внимание на то, как разработчики используют Kotlin Multiplatform и как они выстраивают архитектуру подобных проектов. По моим наблюдениям, среднестатистический разработчик Kotlin Multiplatform — это на самом деле Android-разработчик, который в своей работе использует шаблон MVVM просто потому, что так привык. Некоторые дополнительно применяют «чистую архитектуру». Однако, на мой взгляд, для Kotlin Multiplatform лучше всего подходит именно MVI, а «чистая архитектура» является ненужным усложнением.

Поэтому я решил написать эту серию из трёх статей на следующие темы:

  1. Краткое описание шаблона MVI, постановка задачи и создание общего модуля с использованием Kotlin Multiplatform.
  2. Интеграция общего модуля в iOS- и Android-приложения.
  3. Модульное и интеграционное тестирование.

Ниже — первая статья серии. Она будет интересна всем, кто уже использует или только планирует использовать Kotlin Multiplatform.
Total votes 15: ↑15 and ↓0+15
Comments16

Реализация навигации в Android приложениях с помощью Navigation Architecture Component

Reading time20 min
Views97K

image


От переводчика


Здравствуйте, хабрчане. Это перевод статьи-документации к новой технологии Navigation для Android-разработчиков. Технология сейчас находится в стадии разработки, но уже доступна для использования и очень даже работает в превью версии Android Studio 3.2 и выше. Я уже опробовал её в действии и могу сказать что меня она впечатлила. Наконец-то осуществление смены экранов перестало быть чем-то сложным, особенно если используется передача данных от одного экрана к другому. Собственно, перевод я делаю для того чтобы больше русскоязычных разработчиков обратило внимание на технологию, и чтобы упростить её изучение.
Если заметите существенные ошибки или неточности, прошу сообщать в комментариях.

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments10

Укрощаем асинхронные процессы в Android с RxJava. Опыт Яндекса

Reading time9 min
Views24K

Всем привет, меня зовут Алексей Агапитов и сегодня я хочу рассказать, как с
помощью такой библиотеки как RxJava можно легко обрабатывать множество
асинхронных процессов в вашем Android приложении.


Мы разберём, как создавать свои холодные и горячие последовательности, обратим
внимание на некоторые нюансы при использовании RxJava, а также рассмотрим
насколько мощными инструментами являются предоставляемые данной библиотекой
операторы.


Рассказывать обо всём я буду на примере приложения Яндекс.Недвижимость и его
главного экрана с картой.


Скриншот

Для начала посмотрим на экран и разберёмся, что на нём происходит и что нам
предстоит реализовать.


Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments23

Как реализовать чистую архитектуру на Android?

Reading time5 min
Views21K

Как реализовать чистую архитектуру на Android?


Что вы найдёте в этой статье?


В 2016 году я начал изучать Java, а в начале 2017 года — Android. С самого начала я уже знал, что существует понятие архитектуры приложений, но не знал, как это применить в своём коде. Я находил много разных гайдов, но понятнее от этого мне не становилось.


Эта статья — именно та, которую мне хотелось бы прочитать в начале своего пути.

Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments5

Паттерны для новичков: MVC vs MVP vs MVVM

Reading time6 min
Views781K
Добрый день, уважаемые коллеги. В этой статье я бы хотел рассказать о своем аналитическом понимании различий паттернов MVC, MVP и MVVM. Написать эту статью меня побудило желание разобраться в современных подходах при разработке крупного программного обеспечения и соответствующих архитектурных особенностях. На текущем этапе своей карьерной лестницы я не являюсь непосредственным разработчиком, поэтому статья может содержать ошибки, неточности и недопонимание. Заинтригованы, как аналитики видят, что делают программисты и архитекторы? Тогда добро пожаловать под кат.
Читать дальше →
Total votes 45: ↑40 and ↓5+35
Comments36

Исследуем RxJava 2 для Android

Reading time25 min
Views210K

enter image description here


Меня зовут Аркадий, я Android-разработчик в Badoo. В последнее время в нашем блоге много постов про Go, PHP, JS, QA, и я решил разбавить их темами по мобильной разработке. Как раз занимался портированием одного Android-проекта с RxJava 1 на RxJava 2 и читал всё, что можно найти на эту тему в интернете. В частности, доклад Джейка Вортона с конференции GOTO Copenhagen 2016. Мне показалось, что это достойный кандидат на перевод – думаю, многие Android-разработчики задумываются о переходе на RxJava 2, и им интересно, что изменилось по сравнению с первой версией.


Джейк сделал достаточно объёмное введение о реактивном программировании, так что знание RxJava 1 не требуется для понимания статьи. Доклад был подготовлен, когда RxJava2 ещё только готовилась к выпуску (на текущий момент уже выпущена версия 2.1.0).

Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments5

RxPM — реактивная реализация паттерна Presentation Model

Reading time9 min
Views13K

Через полгода после выхода прошлой статьи о сравнении RxPM c другими презентационными паттернами мы с Jeevuz, наконец, готовы представить библиотеку RxPM — реактивную реализацию паттерна Presentation Model. Давайте сделаем небольшой обзор основных компонентов библиотеки и покажем, как их использовать.


Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments3

Пишем MVP приложение на Kotlin под Android

Reading time19 min
Views108K


Разработка приложений на Kotlin под Android набирает популярность среди разработчиков, однако статей в русскоязычном сегменте Интернета довольно мало. Я решил немного подправить ситуацию, и написать туториал по разработке приложения на Kotlin. Мы напишем полноценное приложение с использованием всех трендовых библиотек (кроме RxJava) в мире Android-разработки. В конце у нас должно получиться расширяемое и легко тестируемое приложение (сами тесты мы писать не будем).
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments24

Реактивные приложения с паттерном RxPM. Прощайте​ MVP и MVVM

Reading time12 min
Views40K

Уже продолжительное время я размышляю над паттерном RxPM и даже успешно применяю его в «продакшене». Я планировал сначала выступить с этой темой на Mobius, но программный комитет отказал, поэтому публикую статью сейчас, чтобы поделиться с Android-сообществом своим видением нового паттерна.


Все знакомы с MVP и MVVM, но мало кто знает, что MVVM является логическим развитием паттерна Presentation Model. Ведь единственное отличие MVVM от PM – это автоматическое связывание данных (databinding).


В этой статье речь пойдет о паттерне Presentation Model с реактивной реализацией биндинга. Некоторые ошибочно называют его RxMVVM, но корректно будет называть его RxPM, потому что это модификация шаблона Presentation Model.


Этот паттерн удобно использовать в проектах с Rx, так как он позволяет сделать приложение по-настоящему реактивным. Кроме того, он не имеет многих проблем других паттернов. На диаграмме ниже представлены различные варианты и классификации шаблонов представления:



Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments42

Android, Rx и Kotlin или как заставить сжиматься клешню из Lego. Часть 1

Reading time5 min
Views8.9K
Привет, любители Habr! По счастливой случайности в августе 2018 года мне посчастливилось вместе с моим товарищем(kirillskiy) начать работать над потрясающим по своей интересности проектом. И вот, днем мы были обычными программистами, а ночью с̶у̶п̶е̶р̶г̶е̶р̶о̶я̶м̶и̶ снова программистами, которые бьются над вопросами распознавания движений для людей имеющих ограничения функциональности своих конечностей, естественно этим могли бы пользоваться и здоровые люди, используя подобную технологию самыми разными способами.
Total votes 22: ↑21 and ↓1+20
Comments4

@ActivityScope с помощью Dagger 2

Reading time8 min
Views13K
Привет, Хабр! Хочу поделиться опытом создания ActivityScope. Те примеры, которые я видел на просторах интернета, на мой взгляд, не достаточно полны, неактуальны, искусственны и не учитывают некоторых нюансов практической разработки.

Статья предполагает, что читатель уже знаком с Dagger 2 и понимает что такое компонент, модуль, инжектирование и граф объектов и как все это вместе работает. Здесь же мы, в первую очередь, сконцентрируемся на создании ActivityScope и на том, как его увязать с фрагментами.

Итак, поехали… Что же такое scope?


Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments10

Drag и Swipe в RecyclerView. Часть 2: контроллеры перетаскивания, сетки и пользовательские анимации

Reading time7 min
Views16K

Drag и Swipe в RecyclerView. Часть 2: контроллеры перетаскивания, сетки и пользовательские анимации


В первой части мы рассмотрели ItemTouchHelper и реализацию ItemTouchHelper.Callback, которая добавляет базовые функции drag & drop и swipe-to-dismiss в RecyclerView. В этой статье мы продолжим то, что было сделано в предыдущей, добавив поддержку расположения элементов в виде сетки, контроллеры перетаскивания, выделение элемента списка и пользовательские анимации смахивания (англ. swipe).

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments0

Information

Rating
Does not participate
Registered
Activity