Блог Android-разработчицы
850 subscribers
13 photos
179 links
ex-VK, ex-MTS, 6+ лет опыта. Team Lead

Заметки, интересные задачи с работы (в рамках NDA) и просто мои мысли.

Блог: https://dzen.ru/android_junior

Личный канал: https://t.me/android_junior_notes

Мой аккаунт: https://t.me/bagena
Download Telegram
Как запустить компонент андроида в другом процессе?

Тут нам поможет android:process="имя_процесса" в манифесте.

Обычно все компоненты приложения выполняют в процессе, созданным для приложения. Но бывают ситуации, когда нужно какой-то компонент вынести в другой процесс. За три года моей работы я встречала такое только один раз. Но встречала же, так что вполне реальная ситуация.

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

Новый процесс — достаточно тяжелое действие, так что лучше его не использовать, если это не необходимо.
👍1
Вспоминаем основное про манифест.

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

Манифест — то, что должно быть в каждом приложении. Там описывается основная информация о нашем приложении для ОС Андроид, Google Play и инструментов сборки.

В манифесте обязательно должны быть указаны:

— Компоненты, которые мы используем, и их имена. Если не укажем, то система не сможет стартовать компонент. Интент-фильтры, если используем.

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

— Различные требования к девайсам, которые необходимы для корректной работы приложения. Например, минимальная версия системы.

Что можно спросить?
— Что за интент-фильтры?
— А что там с разрешениями? Какие знаешь и какие нужны?
👍1
Очень кратко про рефлексию.

Рефлексия — это специальное API, которое позволяет получить доступ к данным приложения во время выполнения.

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

Рефлексия работает через java.lang.Class. JVM создает его для каждого объекта и именно через него мы можем всё делать.

Почему не любят рефлексию? Чуть выше я писала, что так мы можем получать доступ к приватным полям и менять значения. И тут мы напрочь ломаем инкапсуляцию и архитектуру приложения. Плюс дополнительно из-за того что мы все делаем динамически, снижается производительность. Ну и код, написанный с помощью рефлексии, довольно сложный и запутанный.
https://www.educative.io/courses/grokking-the-behavioral-interview — закончила курс по подготовке к собеседованию. Он бесплатный, поэтому многого я не ожидала от него, но на самом деле довольно хороший. Не зря educative советуют для подготовки.

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

Из минусов: сертификат никак не купить. У меня не сработал ни один способ. Но тут уж сайт не виноват. 😔
Когда я начала смотреть WorkManager, то думала, что там всё достаточно просто. Это же обычная фоновая работа и что там вообще изучать-то. Оказалось, что там очень много всего. И это я ещё не дошла до дебага и общение с воркером 🤔
👍4
Представьте, что вы написали кучу кода, а потом отошли пообедать и в это время котик прошелся по клавиатуре и всё удалил. Или вы решили подтянуть к себе изменения из другой ветки и всё стёрлось. Чтобы ситуация стала ещё печальней: никаких коммитов вы не делали и гит ничего не кэшировал. Что же делать?

В Android Studio есть отличная фича: собственный кэш.

Как его найти: кликаем правой кнопкой мышки по любой папке/файлу → Local History → Show history. И тут вам покажут историю за последние 12 часов. Ура! :)
🔥3❤‍🔥2👍2