Гайдлайны для новичков в Android-разработке: что прямо сейчас намотать на ус

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

С первых шагов уделяйте внимание производительности

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

Другой пример: вы скачали фильм и решили глянуть его в дороге. По вашим расчетам, зарядки должно хватить часа на 4, но в кульминационный момент телефон вырубается, потому что видеопроигрыватель съел все имеющиеся ресурсы устройства.

Вывод: не заставляйте пользователя и другие программы страдать, грамотно расходуйте оперативную память, CPU, GPU и батарею.

Не допускайте утечек памяти

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

Это очень серьезная проблема, значимость которой увеличивается прямо пропорционально времени и интенсивности работы пользователя с приложением.

Несколько полезных рекомендаций:

  • никогда не сохраняйте ссылки на Context, Activity, View, Fragment, Service в статических переменных;
  • будьте аккуратны при передаче ссылки на Activity, View, Fragment, Service в другие объекты;
  • никогда не сохраняйте ссылки на Fragment в Activity.

Чтобы понять, о чем тут вообще речь, и углубиться в исследование темы, почитайте разъясняющий материал.

Создавайте побочные треды

Для того чтобы улучшить производительность приложения, обеспечить хороший отклик и избежать распространенную ошибку ANP («приложение не отвечает»), стоит разделять внутреннюю архитектуру выполнения приложения на потоки (треды). Это позволяет не перегружать главный поток, настроенный по умолчанию. Подробнее про процессы и потоки почитайте на официальном сайте.

Используйте strings.xml

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

Настройте Gradle по умолчанию

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

Садитесь учить паттерны проектирования

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

И учите Kotlin

В этом году Kotlin объявили официальным языком для разработки под Android, что обеспечивает всестороннюю поддержку, рост сообщества и подспорье для быстрого развития языка. Пока не советуем хайповать и учить его вместо Java, но точно имеет смысл учить его вместе с Java. А еще лучше — когда чувствуете себя в Java хоть немного уверенно. Почитайте сравнительный обзор двух языков.

Да и вообще, подходите к обучению комплексно

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

Для этого лучше довериться профессионалам и записаться на программу в онлайн-университете. В отличие от обычных курсов, у вас будет персональный помощник-куратор — он поможет быстро разобраться с вопросами, на которые у новичков часто уходят недели. Помимо этого обучение построено проектно-ориентировано — это значит, что вы будете создавать реальные приложения в процессе прохождения программы. Аналогичный подход используется в ведущих учебных центрах США. Год обучения = год опыта разработки.