DroidCon
17 и 18 марта в Сан-Франциско прошла конференция «DroidCon», посвящённая Android-разработке. Алексей Калачёв побывал на ней и поделилсся интересными выступлениями.
Дата публикации: 24.05.2016
DroidCon — это целая череда конференций, которые проходят в более чем двух десятках стран. Основная цель — поддержка экосистемы Android и предоставление площадки для дискуссий и встреч. Аудитория на DroidCon разномастная, но в основном это разработчики, участники стартапов и бизнесмены — все те, кому так или иначе интересна разработка или бизнес в ключе мобильных технологий.
Прошлым летом американская компания touchlab провела DroidCon в Нью-Йорке, а осенью российская apps4All — в Москве. Впоследствии компании заключили партнёрство и совместно организовали DroidCon в Сан-Франциско, куда мне и посчастливилось попасть. Участие российской стороны чувствовалось — было много разработчиков из России, а также несколько стендов российских стартапов. Конференция организована в лучших традициях и прошла замечательно, без накладок — российско-американскому партнёрству touchlab и apps4all хочется пожелать только удачи!
Главный зал конференции — Spherical Image — RICOH THETA
Открывали конференцию сотрудники Google — Чет Хааз (Chet Haase), ведущий разработчик Android UI Toolkit и Роман Ги (Romain Guy), ведущий разработчик некоего секретного проекта. Началось всё с красивой статистики тех версий Android, которые в России еще не так распространены: у Android Wear уже 4000 приложений и 1500 циферблатов для часов, Android TV выпускаются такими производителями, как Sony, Sharp, nVidia и Razer, а Android Auto устанавливают в свои автомобили Audi, GM, Ford, VW. Кстати, Android Auto теперь доступен в России официально.
50 000 000 000 — столько Android приложений устанавливается в год
Также они ещё раз напомнили, что вышла бета-версия Android N, которую можно установить на некоторые модели Nexus. Показали основные фишки новой версии: это режим мультиоконности, когда два приложения запущены на половинках экрана, режим «картинка-в-картинке», и можно смотреть видео, параллельно работая с другим приложением, а также режим «Drag-n-Drop». Если первые два уже реализованы и в Android, и в Windows Mobile, то Drag-n-Drop — это существенное отличие, упрощающее работу с системой. Теперь при поддержке приложением данной функции можно будет просто перетягивать файлы из одного приложения в другое, чтобы последнее их открыло.
(Источник: developer.android.com)
В новой версии появятся новые шаблоны для нотификаций, появится одновременная поддержка нескольких локалей, еще лучше будет работать режим энергосбережения Doze. Для разработчиков представили поддержку масштабирования интерфейса — в новой версии можно будет не только увеличивать шрифты, но и сами элементы управления, поэтому придётся использовать относительные величины. Также в новой версии обещали улучшение производительности для векторной графики (VectorDrawables).
Эти нововведения впечатляют, но, увы, даже предыдущая версия Android Marshmallow на Апрель 2016 занимает 4,6%, а без должного распространения новые функции будут поддерживаться далеко не всеми разработчиками.
Что действительно было встречено с большой радостью, так это поддержка некоторых особенностей Java 8. Android базируется на Java 7 и лишён таких инструментов, как например лямбда-выражения. Теперь для поддержки функциональности Java 8 можно в Gradle-файле указать следующее:
android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
При этом появится возможность использовать лямбда-выражения (с поддержкой до Android 2.3), в интерфейсах появится поддержка статических методов и методов по умолчанию, а аннотации для каждого поля теперь могут повторяться несколько раз.
Подробности вы можете посмотреть по ссылке: http://www.youtube.com/watch? v=IL50oWdgfNY
Ваким Вёрджес (Joaquim Verges) из Twitter рассказывал про анимации в Android. Он отметил, что всё больше разработчиков следуют гайдлайнам Android. Это хорошо, поскольку пользователи получают тот опыт, который ждут от экосистемы, но в тоже время приложения становятся похожими друг на друга. Одним из способов выделить приложение среди других — это качественная анимация. В своём выступлении он показал, как можно передавать View и его расположение с одной Activity в другую (изначально прозрачную), а также поделился практиками использования анимации, чтобы это не сказалось на производительности.
Его выступление здесь: https://www.youtube.com/watch? v=HLhA0I00TnI
Ещё одним полезным докладом стало выступление Хён Ха Дао (Huyen Tue Dao) из Trello. Она поделилась советами относительно того, как сделать XML-разметку интерфейса чище и при этом повысить производительность и совместимость с устройствами. Действительно, большинство разработчиков просто не знает про большинство приёмов.
Ключевое значение играет производительность. А она зависит от количества ресурсов, которые использует ваше приложение.
Если есть возможность, то стоит использовать атрибуты вместо отдельных View. Например, чтобы создать картинку с текстом.
Было:
Стало:
Этот же совет можно применить к разделителю элементов в ListView — следует использовать атрибут divider вместо отдельных View.
Ну и основной совет был — не наследовать layout_weight, удалять неиспользуемые View и избегать большой вложенности.
При усложнении интерфейса стоит всегда обращать на это внимание и искать пути оптимизации вместо нагромождения разных View.
Источник СтилиФорматированиеШрифтРазмер
Было:
Стало:
Ознакомиться с советами можно в видео: https://www.youtube.com/watch? v=-xAdDqwaWJk
На DroidCon выступал и Иджит Бойар (Yigit Boyar), работающий в команде Android UI Toolkit в Google, а до этого в команде Path. Он поделился опытом в разработке приложений, которые поддерживают и корректно обрабатывают offline-режим. Правильно обработать низкоскоростное соединение и его отсутствие — проблема многих приложений. А приведённая в докладе статистика доказывает, что эта проблема действительно актуальна: 55% трафика Латинской Америки, 30% Восточной Европы, 50% Центральной и Западной Европы, 80% Африки и 60% Азии — это трафик на скорости EDGE (от 120Кбит/с до 384Кбит/с).
Act locally, sync globally!
При проектировании API нужно думать не в контексте запроса-ответа — нужно задумываться о пользователе, работать в ключе синхронизации. Можно хранить на устройстве локальную модель данных, включая изменения, а при синхронизации использовать вспомогательные поля, в которых хранятся версии объектов или локально изменённые данные. Благодаря такой архитектуре пользовательский опыт от приложения сохранится положительным, даже если соединение нарушилось.
При этом также стоит отказаться от блокирующих интерфейс окон «Подождите», «Идёт загрузка» — при правильной архитектуре возможна синхронизация без блокирования интерфейса.
Если возникла ошибка отправки данных на сервер, простого сообщения об этом (например, Toast или надпись в интерфейсе) мало. Пользователь уже мог закрыть приложение. В таком случае стоит послать пуш-нотификацию, и пользователь сможет повторить отправку. И наконец, если действие не требует наличия соединения с сервером, то оно должно быть доступно оффлайн всегда.
Завершился доклад простым выводом: «Локальный диск — ваш бро, а сеть — не ваш бро».
Всё выступление доступно по ссылке: https://www.youtube.com/watch? v=n8nG5K_3BJM
В павильоне DroidCon — Spherical Image — RICOH THETA
Так прошёл очередной DroidCon, и снова ведущие разработчики поделились своими лучшими практиками и советами. Выступления шли параллельно и, увы, не на все из них удалось попасть. Но записи всех выступлений доступны на YouTube: https://www.youtube.com/playlist? list=PLnVy79PaFHMXpPlgs1uUny8eb-PEfEQNn
Теперь ждём конференцию Google I/O 2016 — главную конференцию для Android-разработчиков — до 18 мая осталось совсем немного времени!
Полный текст статьи читайте на CMS Magazine