Откройте для себя заново возможности разработчика

Каждый разработчик Android начинает свой путь с включения режима разработчика на устройстве. Без этой опции вы не сможете установить приложение на свой телефон.

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

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

1. Оптимизация рендеринга просмотра

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

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

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

И тут я наткнулся на эту статью.

Это помогло мне кардинально оптимизировать рендеринг представления. Благодаря удалению перерисовок и выравниванию иерархии макетов мое приложение стало более плавным.

Без лишних слов перейдите к параметрам вашего разработчика. В разделе «Отладка перерисовки графического процессора» выберите «Показать области перерисовки». Откройте свое приложение и осмотрите все красноватые области.

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

Я до сих пор иногда переключаю эту опцию. Это может помочь вам определить:

  • Слишком сложные представления, какими бы плоскими они ни были.
  • Ненужная перерисовка фона.

2. Поддерживайте адаптивность вашего приложения

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

В худшем случае ваше приложение может не отвечать в течение определенного времени. Затем система выводит на экран пользователя диалог Приложение не отвечает (ANR). Более подробную информацию вы можете найти в этой статье.

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

  1. Они символизируют наихудший пользовательский опыт.
  2. Существует несколько инструментов для их отслеживания, например Firebase Crashlytics.

Отсутствие показателей для определения ANR тоже не помогает. Их также сложнее отлаживать, поскольку для предотвращения сбоя требуется оптимизация, а не исправление кода.

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

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

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



Вы можете комбинировать StrictMode с рендерингом HWUI профиля. Этот параметр отображает столбцы с порогом, который вы не должны превышать. Каждый раз, когда вы это делаете, кадры пропускаются.

3. Убедитесь, что ваше приложение корректно восстанавливается.

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

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

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

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

Теперь вы можете забыть выключить эту опцию. Поскольку у вас может быть странное поведение, я рекомендую сообщить вашим тестировщикам, когда он активен. Например, вы можете отображать Toast в режиме отладки при запуске приложения. Вы можете обнаружить это с помощью этого метода расширения:

4. Ограничьте фоновые процессы

Мы нашли способ проверить давление памяти на нашу деятельность. А как насчет фоновых процессов?

Благодаря StrictMode мы увидели, насколько важно использовать потоки. Следует сосредоточиться на стремлении облегчить основную нить. Например, вы можете захотеть создать фоновые процессы через Service.

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

Кроме того, вы не единственное приложение, создающее фоновые процессы. И системе Android иногда приходится уступать место. Некоторые из них останутся в памяти на какое-то время. Некоторые будут убиты.

Вы должны убедиться, что ваше приложение хорошо справляется с воссозданием ваших процессов.

Прямо под параметром «Не сохранять активность» вы можете найти поле «Ограничить фоновые процессы». Это позволяет вам ограничить, сколько из них вы принимаете для одновременного запуска.

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

  • Причины производительности
  • Экономия батареи

Не у всех есть последний флагман. Экосистема Android обширна, и вы всегда должны учитывать, как ваше приложение в ней работает.

Поиграйте с опциями разработчика

Не стесняйтесь и попробуйте их. Не пренебрегайте этими инструментами. Они могут быть вашим лучшим шансом отладить ваше приложение.

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

Я выделил только четыре инструмента отладки, но вам следует изучить и другие. В зависимости от того, над чем вы работаете, некоторые из них могут принести вам больше пользы, чем мне.

Так что возьмите свой телефон, поиграйте с ним и дайте своему приложению удовольствие!