uz
Feedback
Android Live 🤖

Android Live 🤖

Kanalga Telegram’da o‘tish

Самые свежие новости, новинки и тренды Android от практикующего разработчика. Автор: @al_gorshkov, Чат: @android_live_chat Личный блог: @al_gorshkov_blog Рекламу не размещаю

Ko'proq ko'rsatish
5 153
Obunachilar
-324 soatlar
-47 kunlar
-1330 kunlar
Postlar arxiv
В последнее время мне очень нравится жанр интервью. Особенно интересны профессиональные интервью, в которых люди делятся опытом работы в каких-то больших проектах. Из подобных разговоров можно взять полезные инструменты, а также избежать ошибки, которые допускались этим человеком. Ведь лучше учиться на ошибках других людей, чем на своих. Не так давно слушал подкаст с командой Android-разработки приложения Badoo. Уверен, что каждый хоть немного, но слышал об этом приложении. Огромное количество пользователей, куча локалей и большая команда. Интересно было услышать то, как организуется работа с Git. Интересен ли вам подобный формат? Хотелось бы видеть на канале интервью с опытными разработчиками, рассказывающими о своём опыте?

​​Использование сплэш-скринов в приложении #разработка Уверен, что любой пользователь сталкивался со сплэш-скрином в приложении. В основном, это логотип приложения, который появляется на пару секунд. Иногда отображается progressbar, сигнализирующий о загрузке приложения. Бесспорно, наилучший вариант, когда этого экрана нет. При открытии приложения, нужно давать доступ к контенту настолько быстро, насколько это возможно. На практике такая возможность есть не всегда: например, нужно загрузить статические данные с сервера, без которых работа приложения невозможна. Для стартового экрана часто используют Activity, на которой просто добавлена ImageView с логотипом. При этом появляется неприятный баг, который влияет на скорость показа контента: белый экран. Проверьте список приложений на своём телефоне — даже приложения с большим количеством пользователей забывают об оптимизации старта. Для решения проблемы используйте layer-list, который состоит из фона и изображения. В итоге получаем опрятный и быстрый стартовый экран. Подробнее о правильном создании экрана можно прочитать по ссылке. Итог: старайтесь избавиться от стартового экрана, но если это невозможно, то добавляйте его правильно.

​​Библиотека Rx сильно упрощает разработку приложений. Появилась задача: нужно сделать одновременно два запроса, и выбрать тот, который вернётся первым. При этом каждый из запросов теоретически может возвратить невалидные значения или вообще не ответить. Через Rx получилось красивое решение в несколько строк — через оператор Observable.amb() идет запрос к источникам, обработка же ошибок идет через onErrorResumeNext. Уже не представляю создание приложений для Android без Rx в связке с lambda. Очень не хочется возвращаться к тому «callback hell», что был раньше.

«Пластилиновая» архитектура #статьи #архитектура Прочитал статью, в которой автор рассуждал о качестве кода, и как его получить в команде. В ней он упомянул понятие «пластилиновой» архитектуры.  «Пластилиновая» архитектура — структура приложения, в которой каждая новая фича куском приклеивается к текущему функционалу по принципу «лишь бы работало». Взамен получаем: • сложно поддающийся тестированию продукт; • всплывающие баги в уже готовом функционале; • тяжелое внедрение новых фич; • постоянный стресс команды и срыв сроков разработки. Уверен, что при создании проекта очень важно проектирование. Опытным разработчикам нужно доносить до новичков правильные подходы к программированию, благодаря чему код проекта будет чистым и понятным.

​​К вопросу о необходимости SSD.

Как оценить разработку проекта? #планирование #книги При работе важно правильно планировать ресурсы и скорость разработки. От этого зависит как репутация, так и качество продукта. В идеальном мире разработка проекта протекает примерно так: • есть детализированное ТЗ, где четко описаны требования к проекту; • тимлид четко понимает все особенности проекта; • тимлид уверен в том, насколько хорошо сотрудники квалифицированы; • сотрудники не заболевают, не пропускают рабочик дни, всегда одинаково работают, с постоянной скоростью.  Уверен, что многим известна другая тенденция. Заказчики часто просят «сделать небольшую правку», которая не входит в ТЗ. У разработчиков появляются баги, которые необходимо править. При этом проект может быть не полностью понятен и в начале разработки есть неопределенность. Тут и возникает необходимость правильного планирования. Для того, чтобы понять, как правильно планировать разработку и ежедневные дела, рекомендую к прочтению книгу Максима Дорофеева «Джедайские техники». Автор долгое время работал в сфере IT, и его советы очень хорошо подходят разработчикам. По ссылке вы увидете рекомендации автора по планированию спринтов, используя Agile методологию. Уверен, что описываемые вещи очень помогут менеджерам, тимлидам, фрилансерам в верной оценке проекта.  http://mnogosdelal.ru/slidecasts/project-estimation/

​​В конце каждого года, Google и Apple публикуют рейтинг лучших приложений из официальных магазинов. Интересно наблюдать за теми трендами, которые присутствуют у пользователей смартфонов. Любопытно, что несмотря на все попытки запретить Telegram, он стал одним из наиболее скачиваемых приложений и трендов года. Google Play: https://play.google.com/store/apps/editorial_collection/promotion_topic_3002d08_apps_TP_bestof2017 Apple Store: https://developer.apple.com/app-store/best-of-2017/trends-of-the-year/

Хотел бы рассказать о нескольких удобных приёмах взаимодействия с приложением после поворота экрана. Чаще всего начинающие разработчики пользуются встроенными средствами — методы onSaveInstanceState и onRestoreInstanceState. При этом приходится писать достаточно много шаблонного кода. Описанные #библиотеки позволят уменьшить написание подобного кода и улучшить его читаемость. 1) Moxy. Отлично применима для MVP-паттерна, сохраняет состояние View в выделенную область — ViewState. Сохраняет свое состояние после пересоздания Activity и заметно облегчает работу. 2) Icepick. Позволяет сохранить состояние полей. Достаточно одной аннотации и поле не удалится после поворотов экрана.

Частым форматом для обмена между сервером и клиентом является JSON. Обычно, разработчики пользуются библиотеками для парсинга, например Gson. Для того, чтобы использовать её, необходимо сгенерировать POJO-файл с указанием необходимых полей для сереализации. Для их генерации можно использовать сайты-генераторы (http://www.jsonschema2pojo.org/), которые на выходе дают текст этого файла. Данный сайт достаточно неплохое решение, но не так давно я обнаружил средство, которое ускоряет создание подобных файлов. Это средство — RoboPOJOGenerator. Оно представляет из себя #плагин для Android Studio, которые позволяет в несколько кликов получить POJO-файл, включенный в проект и полностью готовый для использования. Это избавляет от необходимости ручного создания файлов. Также, генератор полностью совместим с Kotlin, поддерживает несколько популярных библиотек для парсинга. Оптимизация подобных процессов ускоряет рабочий процесс и избавляет от рутинных действий.

Уже несколько раз за время своей практики разработчика, встречаю один неприятный момент — RTL-языки (right-to-left, те языки, который пишутся справа-налево). Если пишите приложение для большого количества пользователей из разных стран - попробуйте поменять язык телефона на фарси и посмотрите, не появились ли аномалии в верстке. Из опыта скажу, какие баги встречал: 1) LinearLayout. Один из самых распространенных элементов для верстки по умолчанию работает не очень хорошо с фарси. Если не выставлять нужные gravity у него верно, то получите кашу в своем. У RelativeLayout тоже есть проблемы, но опять же смотрите на gravity, layout_toLeftOf и подобные. С новомодным ConstraintLayout в этом плане проблем меньше, 2) Строки. Одной из задач, которую я делал — был показ счета команд. Выяснилось, что приходящие строки приходили верно, но по причине того, что строка была из цифр, латинских букв и фарси — она начала отображаться неверно, что было критично. 3) Календарь. Форматтер в фарси присылал день на один меньше, чем на самом деле. Проблема решилась тем, чтобы выводить дату в английской локали. Иными словами — обязательно смотрите, как выглядит ваше приложение в RTL-локалях.

Топ статей с Medium по Android-разработке за неделю. #статьи #medium 1) Описание многопоточности в RxJava 2. — (12 минут) Эта библиотека для многих, (в том числе и для меня) незаменимым инструментом для работы с сервером, API, доступом к БД. Автор очень подробно описывает операторы для многопоточности в RxJava, разницу между thread pool, которые в ней используются. https://blog.gojekengineering.com/multi-threading-like-a-boss-in-android-with-rxjava-2-b8b7cf6eb5e2 2) Knowledge boost for junior Android developers. — (6 + 6 минут) Список компонентов, инструментов, приемов и библиотек, который полезно знать и учитывать всем разработчикам. Некоторые моменты статьи спорные и требуют изучения. Но хорошо, когда прочитанная статья заставляет изучить какую-то тему. Читайте, устраняйте свои пробелы. https://android.jlelse.eu/knowledge-boost-for-junior-android-developers-part-i-b3250fe4b622 https://android.jlelse.eu/knowledge-boost-for-junior-android-developers-part-ii-e62ae5154160 3) Побитовые операторы. — (3 минуты) Хорошо, с графиками и наглядно автор описывает применение побитовых операторов в разработке. Рекомендую изучить, особенно если ваши знания по этой теме давно не обновлялись. https://android.jlelse.eu/java-when-to-use-n-8-0xff-and-when-to-use-byte-n-8-2efd82ae7dd7

Хочу рассказать о полезной вещи как паттерны. Паттерн — это шаблон, который помогает правильно организовать код и который известен другим разработчикам, что не вносит неопределенности при работе в команде. Паттерны, как и архитектура, организуют код, делают его понятным. Только важно помнить, что все хорошо в меру и не стоит применять их «для галочки». Первый, и самый простой #паттерн — это паттерн Builder. Наиболее известный пример — StringBuilder. Реже используются FloatBuffer, IntBuffer. Идея состоит в том, что для создания какого-то объекта, имеющего много свойств не создается отдельный конструктор, а вместо этого делается цепочка из методов, каждый из который возвращает объект с примененным в этом методе свойством. Пример: представьте себе программу, которая создает для вас игроков для стратегии. Каждый игрок имеет определенные свойства: пол, вес, возраст, цвет волос, национальность. Вместо описания всех этих свойств сразу, мы можем задавать параметры шаг за шагом, до тех пор, пока не создадим персонажа. По такой же схеме работает и Builder.

Что изучать в начале карьеры Android-разработчика? Делюсь полезными библитеками, с которых стоит начать карьеру. #статьи #библиотеки #разработка http://telegra.ph/CHto-izuchat-v-nachale-karery-Android-razrabotchika-11-27

Каждую неделю я буду публиковать топ статей, которые меня заинтересовали. Начну эту традицию с сегодняшней подборки: #статьи #medium 1) Создание анимации кнопки "лайк", похожей на Instagram, используя StateListAnimators. -(5 минут) В большинстве приложений, эта кнопка просто меняет состояние. Статья поможет вам выделиться на фоне этих приложений и добавит чуть больше анимаций в проект. https://android.jlelse.eu/using-statelistanimators-to-create-instagram-like-animation-db2676c9391 2) Красивые анимации, созданные при помощи ConstraintLayout. - (6 минут) Статья расскажет о использовании TransitionManager для достаточно красивых и простых анимаций https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3 3) Стресс-тестирование своего приложения. - (6 минут) Говорится о том, что необходимо проверять при тестировании приложения. Хороший чек-лист, рекомендую делать его как минимум перед каждым релизом https://medium.com/default-to-open/stress-testing-android-apps-601311ebf590

Как найти работу новичку? #собеседование Что нужно для работодателя? Важен ли диплом? Где найти работу? Что спрашивают на собеседовании? Попробую ответить на эти и другие вопросы. Подобные вопросы часто возникают у человека после окончания вуза или если он решает сменить деятельность на сферу разработки ПО. Хочу поделиться опытом и мнением. http://telegra.ph/Kak-najti-rabotu-novichku-11-16

Здравствуйте! Разрабатываю мобильные приложения для Android. Через меня проходит большое количество новостей из мира технологий, которым хочется делиться и высказывать мнение. Канал будет интересен тем, кто работает в области IT и мобильных технологий, а также интересуется ей. Подписывайся, будет интересно.