Pull to refresh
7
0
Dmitrii Rubtsov @massivemadness

Android разработчик

Send message

Пишем транзишинометр для Андроид. Как понять, что мои экраны открываются быстро?

Level of difficultyMedium
Reading time12 min
Views2.3K

Все Android-разработчики хотят одного: чтобы интерфейс их приложения был плавным и отзывчивым, а переходы экранов — быстрыми. Уверенность в плавности и чёткости интерфейса дают замеры метрик. Но как измерить ту самую плавность, как оценить гладкость анимаций? У кого-нибудь есть плавнометр или транзишинометр?

Google даёт нам Macrobenchmark и JunkStats — инструменты для оценки общей отзывчивости и стабильности интерфейса. Но их недостаточно, чтобы понять, быстро ли у нас открываются экраны.

В этой статье мы поговорим о том, как получить полную картину по метрикам UI-перформанса. Как замерить плавность и отзывчивость интерфейса, и как оценить время открытия экрана — одно из самых частых действий для пользователя. Напишем собственный транзишинометр и замерим рендер экрана до первого onDraw и до последнего, причём и во Fragments, и в Compose.

Читать далее

Обзор актуальных инструментов шифрования в Android

Level of difficultyHard
Reading time12 min
Views7.8K

Привет, Хабр! Меня зовут Артур Илькаев, я работаю в департаменте экосистемных продуктов, мы разрабатываем VK ID SDK и все что связано с авторизацией и сессиями, в частности — мультиаккаунт.

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

Читать далее

Измеряя sequences

Level of difficultyHard
Reading time38 min
Views6.4K

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

Много кода и теории...

Читать далее

Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента

Reading time8 min
Views4.1K

На Google I/O 2021 продемонстрировали фичу, которая позволяет динамически менять цветовую схему приложения в зависимости от его контента. Но ни в документации, ни в официальных примерах не оказалось использования этого подхода или API, которое делало бы это на уровне отдельного экрана или элемента.

Ведущего android-разработчика red_mad_robot Рому Чорыева это не устроило, и он для этой цели решил разработать собственное простое решение, — а теперь рассказывает об этом в статье.

Читать далее

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

Reading time8 min
Views313K

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать

Откуда возникает TransactionTooLargeException, если я ничего такого не делал?

Reading time9 min
Views8.9K

Android-разработчиков часто спрашивают на технических собеседованиях, как запускать фрагменты, как передавать туда данные, почему нельзя класть много в аргументы, а много — это сколько, а что может пойти не так и т.д. Мы в Dodo тоже иногда такие вопросы задаём. Я думал, что понимал всё это, но оказалось, что довольно поверхностно. Всё изменилось, когда я столкнулся с частыми крашами TransactionTooLargeException в приложении Дринкит.

TransactionTooLargeException — это исключение из области IPC-вызовов (interprocess communication) и Android Binder. Но его можно получить в безобидной ситуации, когда, казалось бы, мы ничего такого не делали, и не пользовались IPC.

В этой статье предлагаю разобраться с этим крашем и поговорить про IPC-вызовы и Binder.

Читать далее

Превращаем старый телефон на Android в веб-сервер

Reading time4 min
Views49K

Есть ли у вас старый телефон на Android? Наверняка есть! В мире накопилось безумное количество всевозможного электронного мусора, и в среднем гражданин развитой страны меняет телефон каждую пару лет, поэтому старые телефоны, вероятно, один из самых распространённых видов электронных отходов.

У меня залежался собиравший пыль старый Motorola G5 Cedric, поэтому я решил сделать с ним что-нибудь, и теперь на нём работает веб-сервер Puma с простым веб-приложением на Sinatra.

Читать далее

Jetpack Compose: реализация меню Apple Watch

Reading time11 min
Views3.4K

Мне очень нравится меню с Apple watch: плавность анимации, поведение иконок при перемещении, расположение элементов по необычной сетке. Я захотел повторить это меню на Android. Но делать это на старом подходе с помощью ViewGroup или кастомного Layout Manager для RecyclerView не очень хотелось: слишком уж затратно для работы «в стол». 

С появлением Compose эта идея стала более привлекательной и интересной для реализации. Рассказываю, как создать собственный ViewGroup на Jetpack Compose. 


Читать дале

Реставрация 100-летнего фильма с помощью ИИ

Reading time5 min
Views25K

Генеральный директор проекта neuro.love Денис Ширяев поделился удачными практиками и алгоритмами для восстановления и улучшения качества старых фильмов. Для самостоятельных экспериментов требуются базовые знания Abode Premiere или After Effects, но результат того стоит. Подробности — под катом.

Читать далее

Реализация реакций в приложении ВКонтакте на Android

Reading time23 min
Views4.8K

Привет! Меня зовут Денис Загуменнов, я из команды ленты и рекомендаций ВКонтакте. Мы занимаемся новостной лентой, стеной, рекомендациями, комментариями, VK Donut, социальным графом и навигацией.

В августе 2021-го мы представили реакции у записей в официальном приложении ВКонтакте. В этой статье расскажу о реализации. Материал сугубо технический, для Android-разработчиков.

Читать далее

LJV: Чему нас может научить визуализация структур данных в Java

Reading time26 min
Views29K

Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе я запускаю LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбираю, что там внутри, как оно менялось от версии к версии, и как это всё работает.


image

Читать дальше →

Не уйти ли из айти?

Reading time10 min
Views98K

Пока все кому не лень пишут статьи о том, как войти в айти, некоторые из нас нет-нет, да задумываются, а не выйти ли оттуда. Ночные релизы, бесконечные переработки, легаси код, невнятные баги, грубые разговоры в курилках и в коридорах, постоянные требования от менее технически подкованных коллег, иногда целые блоки кода, а то и сборки, отправленные в корзину… Выгорание? Жажда новой жизни? А вдруг там, за дверью серверной или опенспейса R&D, всё по-другому? 

Читать далее

Main Loop (Главный цикл) в Android Часть 3. Другие главные циклы

Reading time16 min
Views8.6K

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

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

Это третья и финальная часть разбора главного цикла в Android. В первой части мы разобрались с тем, что такое главный цикл и как он работает. Во второй, как это работает в Android SDK в Java слое. В этой части мы посмотрим на особенности Looper в C++, поверхностно пробежимся по Flutter, Chrome и React Native. А еще есть игры — в них вообще все с ног на голову.

Читать далее

Оптимизируем отображение 10 000 объектов на карте

Reading time13 min
Views14K

В приложении ЦИАН размещены десятки тысяч объявлений о недвижимости. Нашим пользователям важно видеть географическое расположение этих объявлений на карте. Самым популярным способом отображения оказался вариант, когда каждое объявление показано отдельной точкой. Внутри команды такой вариант мы назвали «Горошек на карте».

Проблема в том, что объявлений очень много: в одной только Москве более 10 000. Из-за этого наша карта работала не очень стабильно: при зуме и движении были тормоза, дёргалась и лагала картинка. С этим нужно было что-то делать. Чтобы разобраться в причинах проблем и найти решения, мы засучили рукава и начали копаться в используемых механизмах. Под катом подробно опишем весь путь оптимизации карт в Android-приложении: от постановки задачи до результата.

Читать далее

Main Loop (Главный цикл) в Android Часть 2. Android SDK

Reading time16 min
Views21K

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

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

Это вторая часть цикла статей по разбору главного цикла в Android. В первой части мы разобрались с тем, что такое главный цикл и как он работает. В этой же части давайте разберемся как Main Loop работает в Android SDK. Разбираться будем в контексте Android SDK версии 30.

Читать далее

Main Loop (Главный цикл) в Android Часть 1. Пишем свой цикл

Reading time13 min
Views26K

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

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

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

Читать далее

Account Manager: аккаунты, токены и все-все-все. Лекция Яндекса

Reading time14 min
Views29K
Android предоставляет мощную систему работы с аккаунтами. Наличие Account Manager уже давно помогает Яндексу — за годы разработки приложений и сервисов мы накопили большой опыт, связанный с механизмами авторизации в Android. Узнать об этом опыте можно из лекции разработчика Кирилла Борисова. Заодно вы поймёте, как указанные системы пригодятся вашему приложению и как избежать подводных камней при взаимодействии с ними.


— Я хочу рассказать про одну небольшую подсистему Android. C ней редко кто сталкивается, слышали о ней совсем немногие, но она может пригодиться гораздо большему числу людей. Это Account Manager — страшная вещь, которая заведует аккаунтами, токенами и всем, что с этим связано.

Рассмотрим, что же такое аккаунт в Android в теории, сферический в вакууме. Затем поглядим на Account Manager как таковой, на сам сервис. И посмотрим, какой же был тернистый путь прошёл Яндекс в укрощении этой зверюги.

Трёхмерный мир на плоском экране: как отобразить банковскую 3D-карту в приложении на Android

Reading time8 min
Views8.1K

Привет, меня зовут Дмитрий Гайдук, я Android-разработчик KODE. В 2018 году к нам пришёл новый заказчик — болгарский банк TBI. У нас был опыт разработки банковских приложений, и в TBI был знакомый функционал: заявки на кредит, платежи и переводы. Кроме реализации кода, вёрстки и сетевых запросов, заказчик попросил добавить трёхмерности и покрутить банковскую карту вокруг своей оси. 

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

Читать далее

Как реализован экран с карточками заявок в друзья и рекомендациями в приложении ВКонтакте

Reading time23 min
Views8.9K

Всем привет! Меня зовут Денис Загуменнов, я из команды ленты и рекомендаций ВКонтакте. Мы занимаемся новостной лентой, стеной, разделом «Рекомендации», записями, комментариями, VK Donut, подкастами и социальным графом. То есть всем, что касается потребления контента и взаимодействия с ним.

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

Читать далее

Получаем результат правильно (Часть 1). Activity Result API

Reading time7 min
Views60K

Каждый Android-разработчик сталкивался с необходимостью передать данные из одной Activity в другую. Эта тривиальная задача зачастую вынуждает нас писать не самый элегантный код. 

Наконец, в 2020 году Google представила решение старой проблемы — Activity Result API. Это мощный инструмент для обмена данными между активностями и запроса runtime permissions. 

В данной статье мы разберёмся, как использовать новый API и какими преимуществами он обладает.

Читать далее
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity