Android Live 🤖 – Telegram
Android Live 🤖
5.28K subscribers
52 photos
1 video
800 links
Самые свежие новости, новинки и тренды Android от практикующего разработчика.


Автор: @al_gorshkov,
Чат: @android_live_chat
Личный блог: @al_gorshkov_blog

Рекламу не размещаю
Download Telegram
Хотел бы рассказать о нескольких удобных приёмах взаимодействия с приложением после поворота экрана. Чаще всего начинающие разработчики пользуются встроенными средствами — методы onSaveInstanceState и onRestoreInstanceState. При этом приходится писать достаточно много шаблонного кода. Описанные #библиотеки позволят уменьшить написание подобного кода и улучшить его читаемость.

1) Moxy. Отлично применима для MVP-паттерна, сохраняет состояние View в выделенную область — ViewState. Сохраняет свое состояние после пересоздания Activity и заметно облегчает работу.
2) Icepick. Позволяет сохранить состояние полей. Достаточно одной аннотации и поле не удалится после поворотов экрана.
​​В конце каждого года, 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/
Как оценить разработку проекта?
#планирование #книги

При работе важно правильно планировать ресурсы и скорость разработки. От этого зависит как репутация, так и качество продукта.

В идеальном мире разработка проекта протекает примерно так:
• есть детализированное ТЗ, где четко описаны требования к проекту;
• тимлид четко понимает все особенности проекта;
• тимлид уверен в том, насколько хорошо сотрудники квалифицированы;
• сотрудники не заболевают, не пропускают рабочик дни, всегда одинаково работают, с постоянной скоростью. 

Уверен, что многим известна другая тенденция. Заказчики часто просят «сделать небольшую правку», которая не входит в ТЗ. У разработчиков появляются баги, которые необходимо править. При этом проект может быть не полностью понятен и в начале разработки есть неопределенность. Тут и возникает необходимость правильного планирования.

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

Прочитал статью, в которой автор рассуждал о качестве кода, и как его получить в команде. В ней он упомянул понятие «пластилиновой» архитектуры. 

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

Уверен, что при создании проекта очень важно проектирование. Опытным разработчикам нужно доносить до новичков правильные подходы к программированию, благодаря чему код проекта будет чистым и понятным.
​​Библиотека Rx сильно упрощает разработку приложений.

Появилась задача: нужно сделать одновременно два запроса, и выбрать тот, который вернётся первым. При этом каждый из запросов теоретически может возвратить невалидные значения или вообще не ответить.

Через Rx получилось красивое решение в несколько строк — через оператор Observable.amb() идет запрос к источникам, обработка же ошибок идет через onErrorResumeNext.

Уже не представляю создание приложений для Android без Rx в связке с lambda. Очень не хочется возвращаться к тому «callback hell», что был раньше.
​​Использование сплэш-скринов в приложении
#разработка

Уверен, что любой пользователь сталкивался со сплэш-скрином в приложении. В основном, это логотип приложения, который появляется на пару секунд. Иногда отображается progressbar, сигнализирующий о загрузке приложения.

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

Для стартового экрана часто используют Activity, на которой просто добавлена ImageView с логотипом. При этом появляется неприятный баг, который влияет на скорость показа контента: белый экран. Проверьте список приложений на своём телефоне — даже приложения с большим количеством пользователей забывают об оптимизации старта.

Для решения проблемы используйте layer-list, который состоит из фона и изображения. В итоге получаем опрятный и быстрый стартовый экран. Подробнее о правильном создании экрана можно прочитать по ссылке.

Итог: старайтесь избавиться от стартового экрана, но если это невозможно, то добавляйте его правильно.
В последнее время мне очень нравится жанр интервью. Особенно интересны профессиональные интервью, в которых люди делятся опытом работы в каких-то больших проектах.

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

Не так давно слушал подкаст с командой Android-разработки приложения Badoo. Уверен, что каждый хоть немного, но слышал об этом приложении. Огромное количество пользователей, куча локалей и большая команда. Интересно было услышать то, как организуется работа с Git.

Интересен ли вам подобный формат? Хотелось бы видеть на канале интервью с опытными разработчиками, рассказывающими о своём опыте?
Топ статей из Medium
#статьи #medium

1) Определение скорости Интернета в приложении. — (5 минут)
Часто в приложении есть необходимость определить, есть ли подключение к Интернет или нет. Автор рассказывает о определении скорости Интернета, причем описывает несколько способов. Можно использовать для статистики и логирования.
https://android.jlelse.eu/designing-android-apps-to-handle-slow-network-speed-dedc04119aac

2) Описание ViewModels и LiveData. — (8 минут)
Недавно Google представила собственный взгляд на архитектуру приложений. Автор описывает о некоторых частях из компонентов архитектуры.
https://medium.com/google-developers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54
​​Знаете ли вы, что сейчас около 0,68% всех и около 8% топовых приложений, опубликованных в Google Play, используют Kotlin? Это такие приложения, как: Сбербанк, Twitter, Pinterest, Netflix.

Учитывая небольшой возраст этого языка и большое количество приложений в Google Play — это достаточно весомая цифра. Только некоторые преимущества:
• полная совместимость с Java;
• уход от NullPointerExceptions;
• интеграция в Android Studio;
• официальная поддержка Google;
• меньше кода;

Уверен, настанет день, когда все приложения будут написаны на Kotlin. И не вижу причин не писать новые приложения на нем.
Планирование проектов в «попугаях»
#планирование

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

Этот метод оценки в «попугаях». Метод представляет собой несколько этапов. Для начала необходимо написать задачи на карточках. При этом, каждая задача записана на одной карточке. Далее, каждый член команды по очереди берет карточку. Игрок может:
1. Взять карточку из стопки и положить её в ряд относительно других карточек. Важно помнить, что слева располагаются легкие задачи, а справа тяжелые.
2. Поменять положение одной из карточек на столе, при этом обосновав свой выбор.
3. Пропустить ход.

Во время планирования важно общаться и объяснять, почему сделан тот или иной выбор.

После того, когда на столе не осталось карточек, необходимо поставить шкалу. Обычно, используют числа Фибоначчи, потому что разница между соседними числами растет, и это облегчает оценку.

Есть нюанс. Обычно, подобный метод оценки подходит для опытных команд, которые разрабатывали подобный фукнционал ранее. Иначе, достаточно сложно оценить, насколько задача сложна. Тем не менее, подобный способ очень сильно помогает оценить спринт, при этом он не привязан к конкретному разработчику.
​​Баланс между работой и отдыхом.
#отдых

Уверен, многим знакомо состояние «потока». Такое состояние, когда ты поглощён работой, при этом забываешь об отдыхе, еде и совсем не отвлекаешься. На мой взгляд, такое состояние говорит об увлеченности и любви к делу, что очень хорошо.

Но вспомните, что говорят доктора: при работе за компьютером нужно делать перерывы каждые полчаса. Вроде так... Когда в последний раз вы делали такие перерывы?

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

Часто бывает, что долго не можешь решить какую-то задачу, оставляешь её на следующий день, и утром решаешь её за короткий промежуток времени. Это именно из-за несоблюдения этого баланса.

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

А как вы считаете, нужны ли «перекуры» на работе, и есть ли они в вашей практике?
​​Сегодня залип на достаточно интересный ресурс — T—Ж.

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

Все началось со #статьи про зарплату
«Никогда, — слышите? — никогда не ждите, что зарплата поднимется сама собой.
Она не поднимется. Никто вам ее не проиндексирует. Никто никогда не признает ваших заслуг и не придет к вам с кучей денег. Даже если вы золотой работник. Даже если свои прошлые выходные вы провели на работе во имя благополучия компании. Не будет у вас ничего — если ничего для этого не сделать».

Одним из авторов тут является Максим Ильяхов, автор знаменитой книги для написания текстов «Пиши. Сокращай», который является для меня примером в написании текстов.
Ещё один #паттерн, который полезно использовать — Adapter (Wrapper).

По сути, это интерфейс, который применяется к классу, который не применим, но при помощи Adapter становится совместим с другим классом. Чтобы стало яснее, объясню на примере.

Например, у нас есть две лодки: весельная и парусная. У них разные свойства, и они не пересекаются. Одна хорошо используется в озере, где не так много воды и нужна маневренность. Другая же — хороша в море, где много ветра и нужно плыть прямо. Но приходит неприятность: нападают пираты. Нужно уплыть от них быстрее, и совместить свойства обеих лодок. Для этого мы используем некий механизм, который вешаем на парусную лодку, и благодаря которому мы можем использовать весла. Этот механизм и будет Adapter.
​​Как всегда, по выходным, топ статей из Medium
#статьи #medium

1) Pro-советы по RecyclerView. — (3 минуты)
Автор делится опытом и некоторыми особенностями использования такого популярного компонента как RecyclerView. Для меня было интересным ходом — возвращать id layout в качестве типа элемента.
https://proandroiddev.com/recyclerview-pro-tips-part-1-8a291594bafc

2) Определение сворачивания и разворачивания приложения. — (4 минуты)
Довольно частый кейс, который есть во многих приложениях. Автор делится несколькими довольно красивыми решениями для быстрой проверки разворотов приложения.
https://android.jlelse.eu/how-to-detect-android-application-open-and-close-background-and-foreground-events-1b4713784b57
Друзья, у нас новая рубрика — «Интервью с разработчиком».
Сегодня мы беседуем с руководителем Android-практики в REDMADROBOT — Александром Блиновым.
Какие библиотеки надежные? Как попасть на работу к роботам? Ответы на эти и другие вопросы вы найдете в статье.
http://telegra.ph/Intervyu-s-razrabotchikom-Aleksandr-Blinov-REDMADROBOT-12-23
Channel photo updated
Уверен, что читающие меня разработчики стремятся делать максимально плавные интерфейсы, используя последние библиотеки и подходы.
Одним из инструментов, который помогает сделать такие интерфейсы являются анимации.
Хочу соединить наши знания о анимациях в несколько статей. Сегодня первая часть, связанная с RecyclerView.
#статьи #анимации

http://telegra.ph/Ozhivlyaem-Android-prilozhenie-CHast-1-RecyclerView-12-26
В последний год мне попадалось достаточно много интересных новостей, связанных с машинным обучением и искусственным интеллектом:

- Алиса от Яндекса;
- ИИ, который пишет музыку;
- беспилотные автомобили;
- подмена лиц в видео.

Введённые системы распознавания лиц работают всё быстрее и безошибочно.
Вы, наверное, уже знаете ту историю, в которой, один журналист решил проверить, насколько быстро его найдут системы распознавания лиц, если он выложит своё фото в базу поиска преступников в Китае. Выяснилось, что за ним приехала полиция через... 7 минут.

Хочу порекомендовать целый пласт полезной информации по машинному обучению. Тут и книги, и блоги, и лекции, и #статьи, разбитые по категориям и которые постоянно дополняются. Ну и конечно, всё бесплатно.
Возможно вам теперь не нужно думать о том, что изучить на новогодних праздниках.

https://github.com/terryum/awesome-deep-learning-papers
Сегодня последняя рабочая пятница. И в такой вечер, казалось бы, нужно отдыхать и готовиться к праздникам.
Но для тех кому скучно — попробуйте пройти короткий, но увлекательный тест от организаторов конференции MBLT dev: https://mbltdev.ru/ru/quiz.

Быстро справились?😁
​​Lite-версии приложения.
#разработка

На этой неделе в Тель-Авиве был Droidcoin, где на одном из выступлений, Facebook рассказал о своей будущей Lite-версии приложения.
Они утверждают, что следующий миллиард пользователей придет из развивающихся стран, при этом устройства, с которых пользователи будут заходить в приложения будут очень слабые, но имеющие свежую версию Android. В качестве примера они приводят устройство, произведеннное в 2017 году — InFocus Turbo 5.
Докладчик рекомендовал обращать внимание на размер приложения, размер кэша, хранилища и время запуска и потребление Интернета.
Помимо всего, он рекомендовал использовать библиотеку ReDex, которая после долгих манипуляций так и не применилась к моему приложению. Будем ждать, что недостатки устранят.
Ссылка на конференцию тут.
Даже если ваше приложение не ориентируется на международный рынок, помните, что существуют не только флагманы, на которых все работает быстро и плавно, а также не у всех пользователей безлимитный 4G Интернет.