• RxJava to Coroutines: end-to-end feature migration

      image

      (originally published on Medium)

      Kotlin coroutines are much more than just lightweight threads — they are a new paradigm that helps developers to deal with concurrency in a structured and idiomatic way.

      When developing an Android app one should consider many different things: taking long-running operations off the UI thread, handling lifecycle events, cancelling subscriptions, switching back to the UI thread to update the user interface. In the last couple of years RxJava became one of the most commonly used frameworks to solve this set of problems. In this article I’m going to guide you through the end-to-end feature migration from RxJava to coroutines.
      Read more →
    • Основы архитектуры приложений на Flutter: Vanilla, Scoped Model, BLoC


        (оригинал статьи на английском языке опубликован на Medium)


        Flutter предоставляет современный реактивный фреймворк, большой набор виджетов и тулов. Но, к сожалению, в документации нет ничего похожего на руководство по рекомендуемой архитектуре приложения для Android.


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


        1. Запрос и загрузка данных.
        2. Трансформация и подготовка данных для пользователя.
        3. Запись и чтение данных из базы данных или файловой системы.

        Учитывая все это, я создал демонстрационное приложение, которое решает одну и ту же задачу используя различные подходы к архитектуре.

        Читать дальше →
        • +21
        • 11.2k
        • 6
      • Flutter app architecture 101: Vanilla, Scoped Model, BLoC


          (originally published on Medium)


          Flutter provides a modern react-style framework, rich widget collection and tooling, but there’s nothing similar to Android’s guide to app architecture.


          Indeed, there’s no ultimate architecture that would meet all the possible requirements, yet let’s face the fact that most of the mobile apps we are working on have at least some of the following functionality:


          1. Request/upload data from/to the network.
          2. Map, transform, prepare data and present it to the user.
          3. Put/get data to/from the database.

          Taking this into account I have created a sample app that is solving exactly the same problem using three different approaches to the architecture.

          Read more →
        • Опыт создания курса по Android разработке на Udemy

          Одни из декабрьских выходных, за отсутствием какого-либо более интересного занятия, я прозябал перед экраном ноутбука. Не помню каким именно образом я оказался на сайте Udemy, но первое, что бросилось мне в глаза — это кнопка «Become an Instructor». О существовании онлайн-курсов я знал не понаслышке, но все курсы, которые проходил, были созданы в сотрудничестве с университетами или крупными компаниями. Об Udemy я слышал и даже заходил на сайт, но никогда не вникал в детали и не знал, что эта платформа предоставляет возможность создать собственный онлайн курс. Я начал изучать платформу, смотрел какие курсы пользуются спросом и умножал стоимость курсов на количество подписавшихся студентов, прикидывая возможную выручку инструктора, и тут же загорелся идеей создания собственного курса. Как только я решил, как именно буду тратить несметные богатства, принялся за дело. И теперь, спустя месяц после публикации курса хочу поделиться с вами своим опытом создания и продвижения курса на Udemy.
          Читать дальше →
          • +21
          • 12.4k
          • 7