Как стать автором
Обновить
4
0

Android Developer

Отправить сообщение

Low performer в Android 2024

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.9K

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

Если большие массивы буков вызывают у вас пот в ладошках, неконтролируемый тремор, панические атаки и еще 17 неустановленных современной медициной заболеваний и их симптомов, то есть версия 6+ с картиночками и меньшим количеством текста. Смотреть тут без регистрации и SMS...

Теперь когда покончили с прелюдиями.

Читать далее
Всего голосов 10: ↑8 и ↓2+10
Комментарии6

Как мы отслеживаем просадки FPS в Альфа-Мобайл?

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.1K

Всем привет 👋 я Максим Кузнецов a.k.a. Android-developer из Альфа-Мобайл. В этой статье я хочу поделиться нашим опытом внедрения механизмов мониторинга производительности в продукты компании. Почему это важно? Потому что производительность напрямую влияет на опыт пользователей, рейтинги приложений и конверсии. Мы рассмотрим статистику, проблемы, наш горький опыт и планы на будущее. Давайте начнем! 🚀

Читать далее
Всего голосов 23: ↑23 и ↓0+25
Комментарии5

Что такое DAO?

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров7.2K

Если вы что-то слышали о концепции организации без большого босса, где анонимный владелец нескольких токенов может влиять на будущее компании — это скорее всего про DAO. В этой статье ты узнаешь, что такое децентрализованные автономные организации (DAO), как вообще возможно их существование и успешные примеры реализации.

Читать далее
Всего голосов 19: ↑18 и ↓1+22
Комментарии10

Custom View в Android — краткое руководство

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров28K

Обзор возможностей кастомных View с примерами кода на Kotlin + бонус в виде ссылок на полезные статьи и обучающие видео по данной теме.

1. Введение.
— Когда может понадобиться реализация собственного View?
— Способы создания собственного View.
— Иерархия View в Android.
2. Жизненный цикл View.
3. Конструкторы View.
4. Методы View.
onAttachToWindow()
onMeasure()
onLayout()
onDraw()
onSizeChanged()
onSaveInstanceState() и onRestoreInstanceState()
onTouchEvent()
5. Обновление View.
invalidate()
requestLayout()
6. Атрибуты для Custom View.
7. Дополнительные материалы для изучения.

Читать дальше
Всего голосов 5: ↑4 и ↓1+5
Комментарии6

Вопросы и ответы для собеседования по Kotlin. Часть 1

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров75K
Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии13

Адаптируем Android приложение для незрячих людей. Часть 1: основы

Время на прочтение19 мин
Количество просмотров6.8K

В один из зимних вечеров я сидел дома, читал замечательную книжку «Android-программирование для профессионалов» и наткнулся на главу про Accessibility. Раньше я об этой теме не задумывался: клал null в поле contentDescription и жил себе спокойно. Но когда узнал, как слабовидящие люди пользуются смартфоном, у меня появилось желание погрузиться в тему доступности глубже.

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

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии6

Адаптируем Android-приложение для незрячих людей. Часть 2: Jetpack Compose

Время на прочтение8 мин
Количество просмотров2.3K

По данным ВОЗ, в мире более миллиарда человек обладает с той или иной формой инвалидности. Поэтому Accessibility, или доступность, — важная штука в разработке программного обеспечения, особенно под мобильные платформы.

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

Сегодня — про Accessibility в Jetpack Compose: в нём сделать доступный графический интерфейс приложения ещё легче, чем на View. Разбираемся, как устроена поддержка доступности в Compose и какие особенности учесть при разработке.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Пишем DSL в Koltin

Время на прочтение5 мин
Количество просмотров19K

Небольшое вступление


Всем привет! Частенько зависаю на Medium и нахожу уйму полезных статей от зарубежных разработчиков. В один из таких дней искал для себя что-нибудь по DSL в Kotlin и наткнулся на серию статей о том, что такое DSL в Kotlin и как с этим работать. До прочтения я имел поверхностное понятие о DSL, так как совсем изредка сталкивался ними. Во время чтения статьи мне понравилась простота описания и подачи примеров от автора так, что по окончанию прочтения я решил перевести эту пару статей для вас. Разумеется, с одобрения автора :) Ну что ж, начнём.
Читать дальше →
Всего голосов 19: ↑13 и ↓6+7
Комментарии6

Многомодульность в Android с точки зрения архитектуры. От А до Я

Время на прочтение20 мин
Количество просмотров63K
Всем привет!

Не так давно мы с вами осознали, что мобильное приложение — это не просто тонкий клиент, а это действительно большое количество самой разной логики, которое нуждается в упорядочивании. Именно поэтому мы прониклись идеями Clean architecture, прочувствовали, что такое DI, научились использовать Dagger 2, и теперь с закрытыми глазами способны разбить любую фичу на слои.

Но мир не стоит на месте, и с решением старых проблем приходят новые. И имя этой новой проблемы — мономодульность. Обычно об этой проблеме узнаешь, когда время сборки улетает в космос. Именно так и начинаются многие доклады про переход на многомодульность (раз, два).
Но почему-то все при этом как-то забывают, что мономодульность сильно бьет не только по времени сборки, но и по вашей архитектуре. Вот ответьте на вопросы. На сколько у вас AppComponent большой? Не встречаете ли вы периодически в коде, что фича А зачем-то дергает репозиторий фичи Б, хотя вроде такого быть не должно, ну или оно должно быть как-то более верхнеуровнево? Вообще у фичи есть какой-то контракт? А как вы организовываете общение между фичами? Есть какие-то правила?
Вы чувствуете, что мы решили проблему со слоями, то есть вертикально все вроде хорошо, но вот горизонтально что-то идет не так? И просто разбиением на пакеты и контролем на ревью не решить проблему.

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

В своей статье я хочу вам рассказать, как дошел до многомодульности именно с архитектурной точки зрения. Какие проблемы меня беспокоили, и как я их старался поэтапно решать. А в конце вас ждет алгоритм перехода с мономодульности на многомодульность без слез и боли.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии18

Как стать Android разработчиком в 2023

Время на прочтение6 мин
Количество просмотров93K

И так, давайте начнем с того, что должен знать и уметь человек, чтобы стать Android разработчиком? Скиллсет будем смотреть по вот этому Roadmap

Читать далее
Всего голосов 14: ↑12 и ↓2+14
Комментарии33

Dagger 2. Часть третья. Новые грани возможного

Время на прочтение19 мин
Количество просмотров64K

Всем привет! Наконец-то подоспела третья часть цикла статей о Dagger 2!


Перед дальнейшим прочтением настоятельно рекомендую ознакомиться с первой и второй частями.


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


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


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


Итак, хватит разглагольствовать, и вперед к новым знаниям!

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии30

Android-приложение в памяти. Доклад об оптимизации для Яндекс.Лончера

Время на прочтение8 мин
Количество просмотров9.5K
В облегченной системе Android Go действуют повышенные требования к предустановленным приложениям — размеру и используемой памяти. Перед нами встала задача в эти требования уложиться. Мы провели ряд оптимизаций и решили серьезно поменять архитектуру нашей графической оболочки — Яндекс.Лончера. Руководитель группы разработки прикладных мобильных решений Александр Старченко поделился этим опытом.


— Меня зовут Александр, я из Санкт-Петербурга, из команды, которая занимается разработкой Яндекс.Лончера и Яндекс.Телефона. Сегодня я расскажу, как мы оптимизировали память в Лончере. Сначала коротко объясню, что такое Лончер. Далее мы обсудим причины, зачем нам оптимизировать память. После этого рассмотрим, как корректно измерить память и из чего она состоит. Затем перейдем к практике. Я буду рассказывать, как мы оптимизировали память в Лончере и как пришли к радикальному решению вопроса. И под конец расскажу о том, как мы мониторим использование памяти, как мы держим ее под контролем.

Всего голосов 34: ↑34 и ↓0+34
Комментарии4

Исключения в Java, Часть II (checked/unchecked)

Время на прочтение9 мин
Количество просмотров287K
Это вторая часть статьи (первая часть — try-catch-finally), посвященной такому языковому механизму Java как исключения. Она имеет вводный характер и рассчитана на начинающих разработчиков или тех, кто только приступает к изучению языка.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

1. Магия checked/unchecked
2. Пессимистичный механизм
3. throws с непроверяемым (unckecked) исключением
4. Множественные исключения
5. Или catch, или throws
6. Поведение компилятора/JVM
7. Overriding и throws
8. Передача свойства по наследству


1. «Магия» checked/unchecked



Механизм исключительных ситуация в Java связан с двумя элементами «магии», т.е. поведения, которое никак не отражено в исходном коде:
1. «Магию» java.lang.Throwable — в throw, catch и throws могут стоять исключительно Throwable или его наследники (мы уже разбирали в предыдущей лекции). Это «право» находиться в throw, catch и throws никак не отражено в исходном коде.
2. Все исключительные ситуации делятся на «проверяемые» (checked) и «непроверяемые» (unchecked). Это свойство присуще «корневищу» (Throwable, Error, Exception, RuntimeException) и передается по наследству. Никак не видимо в исходном коде класса исключения.
Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии12

Исключения в Java, Часть I (try-catch-finally)

Время на прочтение23 мин
Количество просмотров435K
Это первая часть статьи, посвященной такому языковому механизму Java как исключения (вторая (checked/unchecked) вот). Она имеет вводный характер и рассчитана на начинающих разработчиков или тех, кто только приступает к изучению языка.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

1. Ключевые слова: try, catch, finally, throw, throws
2. Почему используем System.err, а не System.out
3. Компилятор требует вернуть результат (или требует молчать)
4. Нелокальная передача управления (nonlocal control transfer)
5. try + catch (catch — полиморфен)
6. try + catch + catch + ...
7. try + finally
8. try + catch + finally
9. Вложенные try + catch + finally


1. Ключевые слова: try, catch, finally, throw, throws


Механизм исключительных ситуаций в Java поддерживается пятью ключевыми словами
  • try
  • catch
  • finally
  • throw
  • throws


«Магия» (т.е. некоторое поведение никак не отраженное в исходном коде и потому неповторяемое пользователем) исключений #1 заключается в том, что catch, throw, throws можно использовать исключительно с java.lang.Throwable или его потомками.
Читать дальше →
Всего голосов 67: ↑47 и ↓20+27
Комментарии24

Неочевидное про Fragment API. Часть 3. Навигация

Время на прочтение8 мин
Количество просмотров13K

Всем привет! На связи Максим Бредихин, Android-разработчик в Тинькофф. А это — третья статья об интересных моментах из Fragment API, о которых вы, возможно, не знали.

Наливайте чай, садитесь поудобнее и приятного чтения!

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Данные всех стран, не объединяйтесь

Время на прочтение4 мин
Количество просмотров21K
Радует, когда на диаграмме кроме новых созвездий находится нечто похожее на зависимость. В таком случае мы строим модель, которая хорошо объясняет связь между двумя переменными. Но исследователь должен понимать не только, как работать с данными, но и какая история из реального мира за ними лежит. В противном случае легко сделать ошибку. Расскажу о парадоксе Симпсона — одном из самых опасных примеров обманчивых данных, который может перевернуть связь с ног на голову.
Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии10

Что такое Android Lint и как он помогает писать поддерживаемый код

Время на прочтение6 мин
Количество просмотров17K

Что такое Android Lint и как он помогает писать поддерживаемый код


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


Кроме того, в Java и Kotlin, как и в любых других языках программирования, есть свои собственные конструкции, которые могут привести к снижению производительности.


Привет, Lint


Мы используем инструмент под названием Lint (или Linter) для избежания таких проблем. Lint — это инструмент для статического анализа кода, который помогает разработчикам изловить потенциальные проблемы ещё до того, как код скомпилируется.

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии0

Восемь именных законов в UX дизайне ( часть 1)

Время на прочтение6 мин
Количество просмотров33K
В UX дизайне, как и в любой другой сфере деятельности, есть свои принципы и законы. В этой статье я бы хотел разобрать восемь из них, которые названы в честь их создателей.


Всего голосов 37: ↑36 и ↓1+35
Комментарии24

Всё о PendingIntents

Время на прочтение7 мин
Количество просмотров25K

PendingIntent являются важной частью фреймворка Android, но большинство доступных ресурсов для разработчиков сосредоточены на деталях их имплементации — «ссылка на токен, поддерживаемый системой» — а не на их использовании.

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

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Стратегия кеширования в приложении

Время на прочтение5 мин
Количество просмотров76K
Когда заходит разговор о кешировании складывается парадоксальная ситуация. С одной стороны все понимают важность и нужность кеширования в архитектуре приложений. С другой стороны мало кто может внятно объяснить что и как надо кешировать.

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

Кеширование – одна из многих тем, наряду с безопасностью и логированием, о которых знают и говорят все, но мало кто может это сделать правильно.
Читать дальше →
Всего голосов 50: ↑39 и ↓11+28
Комментарии47
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Работает в
Зарегистрирован
Активность