Search
Write a publication
Pull to refresh
4
0

Android Developer

Send message

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

Level of difficultyMedium
Reading time9 min
Views3K

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

Читать далее

Отрисовка первого кадра Android-приложения

Reading time5 min
Views13K
image

Всем приветЪ! Этот пост является продолжением поста про глубокое погружение в процесс загрузки-запуска Android-приложения. Сегодня мы пойдем чуть дальше и обсудим момент когда главная Activity приложения запущена и система должна отрисовать первый кадр. Прошу под кат.
Читать дальше →

Использование модальных окон в пользовательских интерфейсах

Reading time7 min
Views20K
Многие дизайнеры в процессе создания цифровых продуктов основываются на свои чувства. Несмотря на то, что в некоторых случаях это полезно, существуют проверенные общие стандарты, которые помогают логически обоснованно создавать решения пользовательского интерфейса вместо того, чтобы полагаться на интуицию.

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


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

Мечтают ли андроиды о Robolectric? Разбираем фреймворк по косточкам

Level of difficultyMedium
Reading time9 min
Views1.1K

Я уверен, вы слышали про Robolectric, но использовали ли хоть раз для UI‑тестирования или screenshot-тестирования? Да, у библиотеки неоднозначная репутация в Android-комьюнити. Возможно, вы будете в восторге, когда её устройство перестанет быть для вас загадкой.

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

Я копнул глубже, упорядочил все свои знания о библиотеке и изложил их под катом.

Читать далее

Tasks и Back Stack в Android

Reading time5 min
Views83K
Привет. Из названия темы вы могли заметить, что речь пойдет о том, как устроены Tasks и Back Stack в Android. Эта статья будет являться свободным переводом официального источника. Тема больше ориентирована на новичков, но я думаю, что и опытный разработчик сможет узнать что-то новое, т.к. тема специфична и не часто приходится кастомизировать поведение наших Activity.
Читать дальше →

Создание Custom Layout в Jetpack Compose

Level of difficultyMedium
Reading time13 min
Views3.1K

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube канала Android Insights

Сегодня я расскажу о том, как создавать Custom Layout в Jetpack Compose, а также мы решим одну связанную с данной темой практическую задачку. Создание Custom Layout может показаться чем-то сложным на первый взгляд, но я постараюсь все объяснить максимально понятно и подробно. Итак, приступим!

Читать далее

Всё о новых штрафах за утечки данных. Сколько светит и как защитить своё приложение

Reading time8 min
Views2.1K

На этой неделе Госдума ужесточила ответственность за нарушения в работе с данными — для компаний штрафы вырастут до 3% от выручки или до 500 миллионов рублей.

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

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

Справочник по синхронизаторам java.util.concurrent.*

Reading time14 min
Views301K
Целью данной публикации не является полный анализ синхронизаторов из пакета java.util.concurrent. Пишу её, прежде всего, как справочник, который облегчит вхождение в тему и покажет возможности практического применения классов для синхронизации потоков (далее поток = thread).

В java.util.concurrent много различных классов, которые по функционалу можно поделить на группы: Concurrent Collections, Executors, Atomics и т.д. Одной из этих групп будет Synchronizers (синхронизаторы).



Синхронизаторы – вспомогательные утилиты для синхронизации потоков, которые дают возможность разработчику регулировать и/или ограничивать работу потоков и предоставляют более высокий уровень абстракции, чем основные примитивы языка (мониторы).
Читать дальше

Что такое CDN и как это работает?

Reading time9 min
Views307K


Цифры и факты (вместо введения)


  • В 2010 году средний размер веб-страницы составлял 481 кБ. В 2019 — уже 1936.7 кБ (подробная статистика). За последние три года значение этого показателя выросло на 314.7%. Как показывают исследования, тенденция к увеличению размера веб-страниц сохраняется.
  • В настоящее время набирают популярность стриминговые аудио- и видеосервисы. По состоянию на апрель 2019 года число подписчиков популярного сервиса Spotify составило 217 миллионов.
  • По данным опросов 25% пользователей уходят с веб-страницы, если она загружается дольше 4 секунд. 74% пользователей, загружающих сайт с мобильного устройства, предпочитают не ждать, если загрузка длится более 5 секунд. 46% пользователей отказываются иметь дело с веб-сервисом, если он медленно работает.

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

[Пятничное] Теория Жоп

Reading time5 min
Views242K

Эту полу-шуточную теорию о проектном управлении я излагал коллегам по ИТ цеху лет 15 назад, и тогда же неоднократно слышал советы загрузить этот текст на Хабр, но руки не дошли. На днях, разгребая старые файлы наткнулся на свои записи и решил все таки поделиться ими с Вами. Частое употребление ключевого слова к сожалению, неизбежно и не отделимо для целостности этого текста, прошу принимать или нет 'as is'. Итак...

Каждая карьера развивается от Жопы к Жопе, и никак иначе. Хочешь повышения - ищи Жопу и принимай, как говорят в Америке, "challenge". Если Вам предлагают возглавить новый проект, либо занять какую то должность, да что угодно - знайте, там Вас ждет Жопа. Иначе не предложили бы, а сами бы справились. Равно как и если Вы ожидаете избавиться от надоевшей Вам сейчас деятельности, надеясь вырваться из "этого ада" и заняться "чем то новеньким" - будьте готовы встретиться с Большой Жопой.

Читать далее

Как работает Android, часть 1

Reading time8 min
Views232K


В этой серии статей я расскажу о внутреннем устройстве Android  —  о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.

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

Корутины: stackful vs stackless

Level of difficultyEasy
Reading time7 min
Views18K

В этой статье я хочу объяснить разницу между stackless и stackful корутинами: чем они отличаются, какие у них плюсы и минусы, а также в общих чертах рассказать, как в некоторых языках программирования реализована многопоточность.

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

Читать далее

Ликбез по диплинкам. Часть 1: Что такое диплинк?

Reading time8 min
Views54K

Я рад приветствовать вас в первой части серии интенсива по диплинкам (deep links или глубинным ссылкам). Для начала, чтобы сформировать некоторый контекст, мы поговорим о том, что такое ссылка, затем мы рассмотрим все типы диплинков, и, в конце, мы обсудим некоторые моменты, связанные с безопасностью. Ну что ж, давайте приступим!

Читать далее

Kotlin DSL: Теория и Практика

Reading time17 min
Views66K

Sql, RegExp, Gradle — что их объединяет? Всё это примеры использования проблемно-ориентированных языков или DSL (domain-specific language). Каждый такой язык решает свою узконаправленную задачу, например, запрос данных из БД, поиск совпадений в тексте или описание процесса сборки приложения. Язык Kotlin предоставляет большое количество возможностей для создания собственного проблемно-ориентированного языка. В ходе статьи мы разберемся, какие инструменты есть в арсенале программиста, и реализуем DSL для предложенной предметной области.


Весь синтаксис, представленный в статье, я объясню максимально просто, однако, материал рассчитан на практикующих инженеров, которые рассматривают Kotlin, как язык для построения проблемно-ориентированных языков. В конце статьи будут приведены недостатки, к которым нужно быть готовым. Используемый в статье код актуален для Kotlin версии 1.1.4-3 и доступен на GitHub.


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

Как заглянуть под капот Composable функции

Level of difficultyMedium
Reading time9 min
Views6.5K

Возникал ли у тебя когда-нибудь вопрос о том, как посмотреть, во что Compose Runtime превращает наши Composable-функции, например, когда ты сделал оптимизацию и хочешь понять, что она работает так, как ты ожидаешь? Если да, то ты по адресу. Привет! Меня зовут Абакар, работаю главным техлидом в Альфа-Банке. В статье попробую разобраться, как Composable-функции меняются при компиляции и как работает аннотация @Composable.

Читать далее

Low performer в Android 2024

Level of difficultyEasy
Reading time8 min
Views3.4K

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

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

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

Читать далее

Что такое DAO?

Level of difficultyEasy
Reading time19 min
Views13K

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

Читать далее

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

Level of difficultyMedium
Reading time13 min
Views39K

Обзор возможностей кастомных 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. Дополнительные материалы для изучения.

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

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

Level of difficultyMedium
Reading time14 min
Views115K
Читать далее

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

Reading time19 min
Views8.3K

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

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

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Registered
Activity